728x90
#정보를 입력할 테이블
CREATE TABLE event_test
(
datetime datetime
) ENGINE = INNODB;
#현재 시각을 입력하는 프로시저 (1)
DELIMITER $$
CREATE PROCEDURE time_now()
BEGIN
INSERT INTO event_test(datetime)
SELECT now();
END $$
DELIMITER ;
#현재 시각을 입력하는 이벤트 스케쥴러 (1)
CREATE EVENT event1
ON SCHEDULE EVERY 1 minute
DO CALL time_now();
#모든 데이터를 삭제하는 프로시저 (2)
DELIMITER $$
CREATE PROCEDURE time_del()
BEGIN
DELETE from event_test;
END $$
DELIMITER ;
#특정시간에 모든 데이터를 삭제하는 이벤트 스케쥴러 (2)
CREATE EVENT event2
ON SCHEDULE AT date_add(now(), INTERVAL 5 minute)
DO CALL time_del();
#특정 기간동안 현재시간을 입력하는 이벤트 스케쥴러 (3)
CREATE EVENT event3
ON SCHEDULE EVERY 10 second
starts date_add(now(), INTERVAL 1 second)
ends date_add(now(), INTERVAL 4 minute)
DO CALL time_now();
일단 테이블을 하나 생성한다.
그후 프로시저를 만든다.
delimiter 는 각 문장의 끝 표시를 다른 문자열로 바꾼다는 것이다
그래서 delimiter $$ 라고 쓰면 기존에 끝 표시였던 ; 이 $$가 되어 sql의 실행 단위가 $$가 나올 때 까지가 된다.
그래서 여러개 문장이 한번에 수행되어야 할 때 $$로 바꾸어 ;로 끝나는 문장이 오더라도 sql이 끊기지 않다가 $$가 오면 sql 문장이 실행되고 볼일이 끝났으니 원래 delimiter였던 ; 로 돌아가기 위해 delimiter ; 를 입력해 준다.
그후 프로시저를 호출하는 이벤트 스케쥴러를 만든다.
on schedule 다음에 여러 표현식이 올 수가 있다.
every는 반복한다는 의미고
at은 특정시간에 한다는 의미고
starts 는 특정 시간에 시작한다는 의미고
ends 는 특정시간에 이벤트 스케쥴러가 종료되서 없어진다는 의미다.
728x90