[MySQL]이벤트스케줄러 생성 (Event Scheduler)

resilient

·

2021. 3. 1. 17:15

728x90
반응형

[MySQL 이벤트스케줄러 생성 (Event Scheduler)]

mysql 문법중에는 예약 작업을 수행할 수 있는 이벤트 스케줄러가 있다.
이벤트 스케줄러는 말그대로 특정 이벤트를 자동으로 정기적으로 수행시킬 수 있다.

이벤트 스케줄러 생성하기

CREATE EVENT IF NOT EXISTS [이벤트 이름]

    ON SCHEDULE

    [수행, 반복 할 시간]

    ON COMPLETION NOT PRESERVE

    ENABLE

    COMMENT [코멘트]

    DO

    [수행할 명령]

END

[이벤트이름] 은 해당 이벤트 스케줄의 이름을 정해준다.

[수행,반복 할 시간] 은 해당 명령을 수행하거나 반복할 시간 및 기간을 정해준다.

[코멘트] 는 해당 이벤트의 내용을 입력해주면 된다.

[수행할 명령] 은 해당 이벤트 시간의 수행할 명령을 입력하면 된다.

insert into Story(userNickNameIdx, highlight, storyMedia, storyCreateTime, storyStatus)
values (?, ?, ?, now(), ?);

CREATE EVENT statusChange
    on schedule
        every 10 second
            do
update Story
set storyStatus =
case
    when TIMESTAMPDIFF(HOUR , storyCreateTime, current_time()) >= 24
        then 1
    when TIMESTAMPDIFF(HOUR , storyCreateTime, current_time()) <= 24
        then 0
    end
where storyStatus = ?;
위 예시 코드는 인스타그램 클론 코딩을 할 때 스토리 생성 부분에서 사용한 코드이다. 24시간이 지나면 스토리가 안보이게 구현하기 위해서 스토리 생성시 시간을 기록해서 현재 시간과 24시간 이상 차이가 나면 storyStatus를 변경하게 구성했다.
ON  COMPLETION NOT  PRESERVE ENABLE
위와 같은 설정은 이벤트를 수행한 후에 삭제 여부를 설정한다. 만약에 이벤트 수행 후 이벤트를 삭제하지 않는다면 NOT을 제거해주면 된다.
반응형

'Back-end > DB' 카테고리의 다른 글

[MySQL]COALESCE  (0) 2021.05.06
[MySQL] like ('%',?,'%')  (0) 2021.03.19
[MySQL] group_concat  (0) 2021.03.01
[MYSQL] 테이블생성,수정,삭제 CRUD  (0) 2020.12.24
[MYSQL] SQL이란?  (0) 2020.12.22