Loading...
MySQL 9.5 Reference Manual 9.5의 15.1.3 ALTER EVENT Statement의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
1ALTER 2 [DEFINER = user] 3 EVENT event_name 4 [ON SCHEDULE schedule] 5 [ON COMPLETION [NOT] PRESERVE] 6 [RENAME TO new_event_name] 7 [ENABLE | DISABLE | DISABLE ON {REPLICA | SLAVE}] 8 [COMMENT 'string'] 9 [DO event_body]
ALTER EVENT statement는 기존 event의 하나 이상의 특성을 변경하는 것으로, 이를 위해 event를 drop 후 다시 생성할 필요는 없습니다. 각 DEFINER, ON SCHEDULE, ON COMPLETION, COMMENT, ENABLE / DISABLE, DO 절에 대한 구문은 CREATE EVENT와 함께 사용될 때와 완전히 동일합니다. (자세한 내용은 Section 15.1.15, “CREATE EVENT Statement”을 참조하십시오.)
어떤 사용자든지 해당 사용자가 EVENT 권한을 가지고 있는 데이터베이스에 정의된 event를 변경할 수 있습니다. 사용자가 성공적인 ALTER EVENT statement를 실행하면, 그 사용자는 영향을 받는 event의 definer가 됩니다.
ALTER EVENT는 기존 event에 대해서만 동작합니다:
1mysql> ALTER EVENT no_such_event 2 > ON SCHEDULE 3 > EVERY '2:3' DAY_HOUR; 4ERROR 1517 (HY000): Unknown event 'no_such_event'
다음 예제 각각에서, myevent라는 이름의 event가 다음과 같이 정의되어 있다고 가정합니다:
1CREATE EVENT myevent 2 ON SCHEDULE 3 EVERY 6 HOUR 4 COMMENT 'A sample comment.' 5 DO 6 UPDATE myschema.mytable SET mycol = mycol + 1;
다음 statement는 myevent의 스케줄을, 즉시 시작하여 여섯 시간마다 한 번 실행되도록 설정된 것에서, statement가 실행되는 시점으로부터 네 시간 뒤에 시작하여 열두 시간마다 한 번 실행되도록 변경합니다:
1ALTER EVENT myevent 2 ON SCHEDULE 3 EVERY 12 HOUR 4 STARTS CURRENT_TIMESTAMP + INTERVAL 4 HOUR;
하나의 statement에서 event의 여러 특성을 변경하는 것도 가능합니다. 이 예제는 myevent가 실행하는 SQL statement를 mytable에서 모든 레코드를 삭제하는 statement로 변경합니다. 또한 event가 이 ALTER EVENT statement가 실행된 후 하루 뒤에 한 번만 실행되도록 스케줄을 변경합니다.
1ALTER EVENT myevent 2 ON SCHEDULE 3 AT CURRENT_TIMESTAMP + INTERVAL 1 DAY 4 DO 5 TRUNCATE TABLE myschema.mytable;
ALTER EVENT statement에서는 변경하려는 특성에 대해서만 옵션을 지정해야 합니다. 생략된 옵션은 기존 값을 유지합니다. 여기에는 ENABLE과 같은 CREATE EVENT의 기본값도 포함됩니다.
myevent를 비활성화하려면 다음 ALTER EVENT statement를 사용하십시오:
1ALTER EVENT myevent 2 DISABLE;
ON SCHEDULE 절은 그 안에 포함하는 timestamp 또는 interval 값을 얻기 위해 내장 MySQL 함수 및 사용자 변수가 포함된 식을 사용할 수 있습니다. 이러한 식에서는 저장 루틴 또는 로더블 함수을 사용할 수 없으며, 어떤 테이블 참조도 사용할 수 없습니다. 그러나 SELECT FROM DUAL은 사용할 수 있습니다. 이는 ALTER EVENT 및 CREATE EVENT statement 모두에 대해 동일하게 적용됩니다. 이러한 경우 저장 루틴, 로더블 함수, 테이블에 대한 참조는 명시적으로 허용되지 않으며, 에러와 함께 실패합니다(Bug #22830 참조).
DO 절에 또 다른 ALTER EVENT statement를 포함하는 ALTER EVENT statement는 성공한 것처럼 보이지만, 서버가 결과로 생성된 스케줄된 event를 실행하려고 시도할 때, 실행은 에러와 함께 실패합니다.
event의 이름을 변경하려면 ALTER EVENT statement의 RENAME TO 절을 사용하십시오. 다음 statement는 myevent라는 event의 이름을 yourevent로 변경합니다:
1ALTER EVENT myevent 2 RENAME TO yourevent;
또한 ALTER EVENT ... RENAME TO ...와 db_name.event_name 표기법을 사용하여 event를 다른 데이터베이스로 이동할 수도 있습니다. 예시는 다음과 같습니다:
1ALTER EVENT olddb.myevent 2 RENAME TO newdb.myevent;
이전 statement를 실행하려면, 이를 실행하는 사용자는 olddb 데이터베이스와 newdb 데이터베이스 모두에 대해 EVENT 권한을 가져야 합니다.
참고
RENAME EVENT statement는 존재하지 않습니다.
DISABLE ON REPLICA 값은 레플리카에서 ENABLE 또는 DISABLE 대신 사용되며, 이는 복제 소스 서버에서 생성되어 레플리카로 복제되었지만 레플리카에서는 실행되지 않는 event를 의미합니다. 일반적으로, DISABLE ON REPLICA는 필요에 따라 자동으로 설정됩니다. 그러나 경우에 따라 이를 수동으로 변경해야 하거나 변경하기를 원할 수도 있습니다. 자세한 내용은 Section 19.5.1.16, “Replication of Invoked Features”을 참조하십시오.
DISABLE ON REPLICA는 DISABLE ON SLAVE를 대체하며, DISABLE ON SLAVE는 사용 중단(deprecated) 상태이고, 향후 버전의 MySQL에서 제거될 수 있습니다.
15.1.2 ALTER DATABASE Statement
15.1.4 ALTER FUNCTION Statement