Database/MySQL
mySql 이벤트
do yeon
2016. 3. 12. 22:40
반응형
-- MySQL 서버 5.1부터 지원하는 이벤트는 초기 설치시 -- 비활성화 되어 있을 수 있습니다. -- SQLGate에서 [관리자] -> [데이터베이스 정보]를 선택하여 -- 이벤트 스케즐의 활성화 여부를 확인 활 수 있습니다. -- 에디터창에서 아래의 문장을 실행하여 이벤트 스케줄을 활성화 시킵니다. -- set global event_scheduler = 1; -- SHOW VARIABLES LIKE '%event%'; 를 통해 이벤트 스케쥴러가 활성화가 되어 있는지 확인 을 할 수 있습니다. -- event_scheduler 의 값이 없거나 OFF로 되어 있으면 전자는 지원하지 않고 , 후자는 이벤트 스케쥴러가 동작을 하지 않고 있는 것입니다. -- 이벤트 스케쥴러를 우선적으로 활성화를 합니다 (지원하지 않는 버전일 경우에 MySQL 을 5.1 이상 버전으로 업그레이드를 해주세요) -- 서버가 실행될때 매번 이벤트 스케쥴러를 실행하고자 할때는 my.ini 에 아래 구문을 추가해 주세요 -- event_scheduler = On -- 사용자 user 에게 database_name 하위에 모든 테이블에 대한 이벤트 권한을 부여 -- GRANT EVENT ON database_name.* TO user; -- 사용자 user에 데이터 베이스 database_name 하위에 모든 테이블에 대한 권한을 제거 한다. -- REVOKE EVENT ON database_name.* FROM user; -- 반복적 이벤트는 아래와 같은 시간 단위를 사용할 수 있습니다. -- YEAR : 년 -- QUARTER : 분기 -- MONTH : 월 -- WEEK : 주 -- DAY : 일 -- HOUR : 시간 -- MINUTE : 분 -- SECOND : 초 -- datediff(날짜1, 날짜2) 날짜 사이의 차이를 숫자값으로 반환 (1일 단위) -- TIMESTAMPDIFF(SECOND, 날짜1, 날짜2) 초단위로 날짜값 차이 구하기 DROP EVENT IF EXISTS update_userdb10; DELIMITER $$ -- 이벤트 update_userdb10 을 생성합니다. CREATE EVENT `test`.`update_userdb10` ON SCHEDULE EVERY 1 DAY -- 지금 부터 1일에 한번씩 이벤트를 수행합니다. -- 2016년 03월12일 20시 40분 시작 STARTS '2016-03-12 21:37:00' ENABLE DO BEGIN -- 등록날짜 30일이 지난 데이터를 변경 -- TIMESTAMPDIFF(초단위, 현재날짜, 등록날짜+30) <= 0 UPDATE triggertest SET col01 = '이벤트실행되서 바뀜' WHERE TIMESTAMPDIFF(SECOND, now(), DATE_ADD(regDate,INTERVAL 30 DAY)) <= 0; END$$ DELIMITER ;
반응형