카테고리 없음
MySQL 저장프로시져 안에 Event Scheduler 를 생성할 수 없음
좋은나무
2013. 1. 31. 15:14
관련 에러 메세지 :
Error Code: 1576. Recursion of EVENT DDL statements is forbidden when body is present 0.000 sec
MySQL 에서는 저장프로시져(Stored Procedure) 안에서 Event Scheduler 를 생성할 수 없음...
여러 번 검색 해보았으나, 방법이 없는 것으로 보임. 음...
직접 아래와 같이 쿼리해야 함. (다행히, 관련 쿼리가 길지는 않음.)
1) 같은 이름가 Event 가 이미 존재할 경우 삭제
DROP EVENT IF EXISTS 'event_name_here';
2) 오늘 오후 11시(23시) 에 한번만 TEST_DB 데이터베이스의 sp_Foo() 저장 프로시져 호출.
SET @var_hour = 23;
SET @var_today_begin = DATE_FORMAT(NOW(), '%Y-%m-%d 00:00:00');
CREATE EVENT IF NOT EXISTS 'event_name_here'
ON SCHEDULE AT DATE_ADD(@var_today_begin, INTERVAL @var_hour HOUR)
COMMENT 'event comment here'
DO CALL TEST_DB.sp_Foo();
3) Event 상태 확인
SET @var_event_count = 0;
SELECT COUNT(EVENT_NAME) INTO @var_event_count FROM information_schema.EVENTS
WHERE EVENT_SCHEMA = 'schema_name_here'
AND EVENT_NAME = 'event_name_here'
AND DEFINER = CURRENT_USER();
IF ( @var_event_count IS NOT NULL ) AND ( @var_event_count > 0 ) THEN
-- do something here!!
END IF;
4) Event Scheduler (Thread) 활성화
SET GLOBAL event_scheduler = ON;
5) Event Scheduler (Thread) 활성화 여부 확인
SHOW GLOBAL VARIABLES LIKE 'event_scheduler';
6) Event Scheduler (Thread) 상태 확인
SHOW PROCESSLIST;
[참조: Using the Event Scheduler]
[참조: CREATE EVENT Syntax]
[참조: DROP EVENT Syntax]
[참조: MySQL 5.1 New Features: MySQL Events]