카테고리 없음

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