안녕하세요.
MySQL 5.1 버전이상의 정기적인 예약 작업 수행을 할수있는 이벤트 스케줄러에 대해 포스팅해보겠습니다.
이벤트 스케줄러는 말그대로 특정 이벤트를 자동으로 정기적으로 수행시킬수 있습니다.
예를들어 '특정 UPDATE문을 2018년 11월 2일 15시 36분 03초에 시켜줘' 라고 등록을 해놓으면 DB가 자동으로 일을 수행하게됩니다.
이벤트 스케줄러 생성 하기 |
먼저 기본 문법에 대해 보겠습니다.
1 2 3 4 5 6 7 8 9 | CREATE EVENT IF NOT EXISTS [이벤트 이름] ON SCHEDULE [수행, 반복 할 시간] ON COMPLETION NOT PRESERVE ENABLE COMMENT [코멘트] DO [수행할 명령] END | cs |
[이벤트 이름] : 해당 이벤트 스케줄의 이름을 정해주어야 합니다.
[수행, 반복 할 시간] : 해당 명령을 수행하거나 반복할 시간 및 기간을 정해주면 됩니다.
[코멘트] : 해당 이벤트의 내용을 입력해주시면 됩니다.
[수행할 명령] : 해당 이벤트의 시간의 수행할 명령을 입력하면 됩니다.
[수행, 반복 할 시간] 설정하기
|
1 2 3 4 5 6 7 8 9 | CREATE EVENT IF NOT EXISTS [이벤트 이름] ON SCHEDULE AT '2018-11-02 13:40:13' -- 특정 시간에 1회 실행 ON COMPLETION NOT PRESERVE ENABLE COMMENT [코멘트] DO [수행할 명령] END | cs |
1 2 3 4 5 6 7 8 9 10 | CREATE EVENT IF NOT EXISTS [이벤트 이름] ON SCHEDULE EVERY 1 DAY -- 하루 한번 반복 ON COMPLETION NOT PRESERVE ENABLE COMMENT [코멘트] DO [수행할 명령] END |
특정 날짜 기간에 명령을 반복 실행 하려면 'EVERY [기간, 시간]'을 사용해줍니다.
(기간, 시간은 YEAR, QUATER, MONTH, DAY, HOUR, MINUTE, WEEK, SECOND 등 사용 할 수 있습니다.)
1 2 3 4 5 6 7 8 9 10 11 | CREATE EVENT IF NOT EXISTS [이벤트 이름] ON SCHEDULE EVERY 1 DAY STARTS '2018-11-02 13:32:55' ENDS '2018-11-03 13:32:55' -- 하루 한번 11월 2일 13:32:55 부터 11월 3일 13:32:55까지만 실행 ON COMPLETION NOT PRESERVE ENABLE COMMENT [코멘트] DO [수행할 명령] END | cs |
특정 날짜 기간에 시작일 종료일을 지정 할 수 있습니다.
(하루 한번 반복하는것을 [언제 시작할것인가, 언제 끝낼것인가])
언제 시작하는지 알리는 STARTS구문만 사용하여도 문제가 없습니다.
ON COMPLETION NOT PRESERVE ENABLE |
해당 설정은 이벤트를 수행후 삭제 여부를 설정합니다.
만약, 이벤트를 수행후 이벤트를 삭제하지 않는다면 'NOT'을 제거 해주시면 됩니다.
(ON COMPLETION PRESERVE ENABLE)
샘플 (SAMPLE) |
1 2 3 4 5 6 7 8 9 | CREATE EVENT IF NOT EXISTS '테스트' ON SCHEDULE EVERY 1 DAY ON COMPLETION NOT PRESERVE ENABLE COMMENT '테스트 입니다.' DO INSERT INTO TEST_TABLE ('TEST1', 'TEST2') VALUES ('테스트', NOW()) END | cs |
샘플 구문을 해석 해보겠습니다.
'테스트' 라는 이벤트를 생성하며 내용은 '테스트 입니다.' 입니다.
실행완료시 해당 이벤트를 삭제를 진행하며, 매일 1회 INSERT 문으로 TEST데이터를 집어넣습니다.
(실행 되는 시간은 이벤트 생성 즉시 생성되는 시간 입니다.)
'IT > MySQL' 카테고리의 다른 글
MySQL 이벤트스케줄러 활성화 (Event Scheduler) (0) | 2018.11.02 |
---|---|
MySQL 세로 데이터를 가로로 만들기 (0) | 2018.09.28 |
MySQL 테이블 존재여부 확인 & 존재 여부에 따른 결과 (0) | 2018.09.27 |