프로시저란?
어떠한 동작을 일괄 처리하기 위한 쿼리문의 집합으로, MySQL에서의 메서드라고 보면 된다. 함수처럼 매개변수를 받고 그에 따라 결과를 나타내는 것이 가능하다.
SQL 명령의 묶음으로, 프로시저로 묶인 SQL 문 질의들은 처리될 때 하나의 쿼리로 해석된다.
프로시저 사용법
DELIMITER //
CREATE PROCEDURE 프로시저명(매개변수)
BEGIN
SQL 문1;
SQL 문2;
END
//
DELIMITER ;
"DELIMITER //" 을 선언해서 기존 구분 문자인 ";" 에서 "//"로 바꿔준다.
CREATE PROCEDURE로 프로시저를 등록한다.
프로시저 등록을 마친 후 "DELIMITER ;"을 통해 다시 구분 문자를 ";"으로 바꿔준다.
call 프로시저명; // 프로시저 호출
DROP PROCEDURE 프로시저명; // 프로시저 삭제
이벤트 스케줄러란?
MySQL 서버에 기본적으로 내장된 구성 요소로, 이벤트를 실행하는데 사용된다.
이벤트 스케줄러를 사용하기 위해서는 설정을 해주어야 한다.
이벤트 스케줄러 조회
SHOW VARIABLES LIKE 'event%'
이벤트 스케줄러 ON으로 활성화
SET GLOBAL event_scheduler = ON;
이벤트 스케줄러, 프로시저 실행 예시
테이블 생성 및 데이터 삽입
CREATE TABLE users (
id INT PRIMARY KEY,
username VARCHAR(50),
age INT
);
INSERT INTO users VALUES
(1, 'name', 20),
(2, 'name2', 21);
프로시저 생성
DELIMITER //
CREATE PROCEDURE update_user_age
(
IN p_id INT,
IN p_age INT
)
BEGIN
UPDATE users
SET age = p_age
WHERE id = p_id;
END //
DELIMITER ;
프로시저 생성 확인
SHOW PROCEDURE STATUS;
프로시저 호출
CALL update_user_age(2, 40); // id가 2인 사용자의 나이를 40으로 업데이트
이벤트 생성
CREATE EVENT users_event
ON SCHEDULE EVERY 1 MINUTE
STARTS '2023-10-07 00:00:00'
COMMENT 'Update age of user with id 1 every minute'
DO
CALL update_user_age(1, 40);
//1분마다 id가 1인 사용자의 나이를 40으로 업데이트 하는 이벤트 생성
생성된 이벤트 조회
SHOW EVENTS;
'DB' 카테고리의 다른 글
[MySQL] 재귀 쿼리 (RECURSIVE CTE) (0) | 2024.12.17 |
---|---|
[DB] 프로시저, 트리거, 사용자 정의 함수 (0) | 2024.01.31 |
[DB] 데이터베이스 키(Key)의 개념 / 종류 (0) | 2024.01.31 |
[DB] 데이터베이스 용어 정리 (0) | 2024.01.31 |
[MySQL] CMD이용해 CRUD 하기 (0) | 2023.05.04 |