프로시저, 이벤트 스케쥴러 실행 예시

LeeKyoungChang·2022년 12월 29일
0

database

목록 보기
6/7
post-thumbnail

프로시저, 이벤트 설명 를 통해 정리한 내용입니다.

 

📚 1. 프로시저

📝 공부하기전, 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;

 

 

📚 2. 이벤트 스케쥴러

✔️ 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;

 

 

profile
"야, (오류 만났어?) 너두 (해결) 할 수 있어"

0개의 댓글