프로시저, 이벤트 설명 를 통해 정리한 내용입니다.
📝 공부하기전, settings
CREATE TABLE proceduretable{
no char(3) NOT NULL
}
✔️ 프로시저 생성
DELIMITER $$
DROP PROCEDURE IF EXIT autoInsertNo$$ -- 프로시저가 존재한다면 없애주는 쿼리문
CREATE PROCEDURE autoInsertNo()
BEGIN -- 실행할 쿼리문 작성 시작 지점
DECLARE i INT; -- 변수 i 생성(Int타입)
SET i = 1; -- 변수 값 지정 또는 변경
WHILE i <= 10 -- 반복문
DO -- 반복실행할 쿼리
IF(i%2 =0)
THEN
INSERT INTO proceduretable(no) VALUE(1); -- 짝수인 경우 1을 입력
ELSE
INSERT INTO proceduretable(no) VALUE('odd'); -- 홀수인 경우 odd를 입력
END IF; -- IF문 끝날 때 이와 같이
SET i = i + 1;
END WHILE; -- WHILE문 끝날 때 이와 같이 사용
END $$
DELIMITER $$
DELIMITER $$
: query를 구분하는 역할을 한다. (없을 시 에러가 발생)DROP PROCEDURE IF EXIT autoInsertNo$$
: 프로시저가 존재한다면 없애주는 쿼리문BEGIN
: 실행할 쿼리문 작성 시작 지점DECLARE
: 변수를 생성해주는 명령어l
✔️ 프로시저 실행해보고 확인
CALL autoInsertNo(); -- 프로시저 실행
select * from proceduretable;
✔️ EVENT_SCHEDULER 생성
SHOW VARIABLES LIKE 'event%';
SET GLOBAL event_scheduler = ON;
SET @@global.event_scheduler = ON;
SELECT * FROM information_schema.events;
SHOW VARIABLES LIKE 'event%';
: MySQL 서버의 Event Scheduler 사용여부 확인
SET GLOBAL event_scheduler = ON;
: Valuer가 OFF면 ON으로 변경
SHOW EVENTS
: MySQL 내에 저장된 Event Scheduler가 있는지 확인(밑 SELECT문 까지 사용해야)
SELECT * FROM information_schema.events;
: event scheduler이 있을 경우 조회하는 query문
CREATE EVENT evt
ON SCHEDULE EVERY 1 DAY
STARTS '2020-02-09 19:00:00'
DO
CALL autoInsertNo();
CREATE EVENT evt
: evt 이벤트 스케쥴러 생성
ON SCHEDULE EVERY 1 DAY
: 매일 하루에 한번 SCHEDULE을 실행하겠다.
STARTS '2020-02-09 19:00:00'
: 시작날짜, SCHEDULE 실행 시간 설정
DO CALL autoInsertNo()
: do query문
아래에 스케쥴러가 실행할 query문
이나 프로시저를 작성해준다.
✔️ event_scheduler 목록 조회 쿼리
SELECT * FROM information_schema.events;
✔️ 프로시저, 이벤트 삭제
DROP EVENT evt;
DROP PROCEDURE autoInsertNo;