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 ;

출처 : http://linuxism.tistory.com/854

출처 : http://superad.tistory.com/entry/MYSQL-event%EC%8A%A4%EC%BC%80%EC%A4%84%EB%9F%AC-%EC%A0%81%EC%9A%A9-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%82%AD%EC%A0%9C

반응형