13.1.2 ALTER EVENT 구문
ALTER [DEFINER = {user
| CURRENT_USER }] EVENTevent_name
[ON SCHEDULEschedule
] [ON COMPLETION [NOT] PRESERVE] [RENAME TOnew_event_name
] [ENABLE | DISABLE | DISABLE ON SLAVE] [COMMENT 'comment
'] [DOevent_body
]
ALTER EVENT
문은 기존의 이벤트의 하나 이상의 특성을 해당 이벤트를 삭제하고 다시 작성하지 않고 변경할 수 있습니다. DEFINER
, ON SCHEDULE
, ON COMPLETION
, COMMENT
, ENABLE
/ DISABLE
, DO
의 각 조항의 구문은 CREATE EVENT
로 사용되는 경우와 동일합니다. ( 섹션 13.1.11 "CREATE EVENT 구문" 을 참조하십시오.)
모든 사용자는 사용자가 EVENT
권한이있는 데이터베이스에 정의 된 이벤트를 변경할 수 있습니다. 사용자가 정상적인 ALTER EVENT
문을 실행하면 사용자는 영향을받는 이벤트의 정의가되고 있습니다.
ALTER EVENT
는 기존의 이벤트에서만 작동합니다.
mysql>ALTER EVENT no_such_event
>ON SCHEDULE
>EVERY '2:3' DAY_HOUR;
ERROR 1517 (HY000) : Unknown event 'no_such_event'
다음 각 예제는 myevent
라는 이벤트가 다음과 같이 정의되는 것을 전제로하고 있습니다.
CREATE EVENT myevent ON SCHEDULE EVERY 6 HOUR COMMENT 'A sample comment.' DO UPDATE myschema.mytable SET mycol = mycol + 1;
다음 문은 myevent
일정을 즉시 시작하고 6 시간마다 1 회에서 명령문이 실행 된 4 시간 후부터 시작하여 12 시간마다 1 회로 변경합니다.
ALTER EVENT myevent ON SCHEDULE EVERY 12 HOUR STARTS CURRENT_TIMESTAMP + INTERVAL 4 HOUR;
이벤트의 여러 특성을 하나의 문으로 변경할 수 있습니다. 이 예에서는 myevent
에 의해 실행되는 SQL 문을 mytable
의 모든 레코드를 삭제하는 SQL 문으로 변경합니다. 또한 행사 일정도이 ALTER EVENT
문이 실행 된 1 일 이후에 한 번 실행되도록 변경합니다.
ALTER EVENT myevent ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 DAY DO TRUNCATE TABLE myschema.mytable;
ALTER EVENT
문은 변경하려는 특성의 옵션 만 지정합니다. 생략 된 옵션으로는 기존의 값이 유지됩니다. 여기에는 ENABLE
같은 CREATE EVENT
의 기본값이 모두 포함되어 있습니다.
myevent
을 해제하려면이 ALTER EVENT
문을 사용합니다.
ALTER EVENT myevent DISABLE;
ON SCHEDULE
절에서는 내장 MySQL 함수 및 사용자 변수를 포함하는 식을 사용하여 거기에 포함되어있는 모든 timestamp
또는 interval
값을 얻을 수 있습니다. 이런 식으로 스토어드 루틴 및 사용자 정의 함수를 사용하거나 테이블 참조를 사용 할 수 없습니다. 그러나 SELECT FROM DUAL
사용할 수 있습니다. 이것은 ALTER EVENT
문과 CREATE EVENT
문에 모두 적용됩니다. 이러한 경우 스토어드 루틴, 사용자 정의 함수 및 테이블에 대한 참조는 명시 적으로 금지되어 있으며 오류와 함께 실패합니다 (Bug # 22830를 참조하십시오).
DO
절에 다른 ALTER EVENT
문을 포함하는 ALTER EVENT
문은 성공한 것처럼 보이지만, 결과 예약 된 이벤트를 서버가 실행하려고하면 실행 오류로 실패합니다.
이벤트의 이름을 변경하려면 ALTER EVENT
문 RENAME TO
절을 사용합니다. 이 문은 이벤트 myevent
의 이름을 yourevent
로 변경합니다.
ALTER EVENT myevent RENAME TO yourevent;
다음과 같이 ALTER EVENT ... RENAME TO ...
와
표기법을 사용하여 이벤트를 다른 데이터베이스로 이동할 수 있습니다. db_name.event_name
ALTER EVENT olddb.myevent RENAME TO newdb.myevent;
이전 문을 실행하려면 그것을 실행하는 사용자가 olddb
및 newdb
데이터베이스 모두에 대한 EVENT
권한을 가지고 있어야합니다.
RENAME EVENT
문은 없습니다.
값 DISABLE ON SLAVE
는 마스터에서 만들어진 슬레이브에 복제되었지만 아직 슬레이브에서 실행되지 않는 이벤트를 나타 내기 위해 ENABLE
또는 DISABLE
대신 리플리케이션에 사용됩니다. 일반적으로 DISABLE ON SLAVE
는 필요에 따라 자동으로 설정됩니다. 그러나 수동으로 변경해야 할 수도 있습니다. 자세한 내용은 섹션 17.4.1.11 "호출되는 기능의 복제" 를 참조하십시오.