Stored Procedure, Function, Trigger

이상민·2021년 8월 15일
0
post-thumbnail

1. Stored Procedure

서버단에 저장되는 SQL 쿼리들, 강력한 VIEW!

  • 선언
DELIMITER //
CREATE PROCEDURE procedure_name(parameter_list)
BEGIN
  -- statements
END //
DELIMITER;
  • 호출
CALL procedure_name(arguments);
  • 프로그래밍 언어의 함수처럼 인자를 넘기는 것이 가능하다

  • 리턴되는 값을 레코드들의 집합이다

  • 간단한 분기문과 루프를 통한 프로그램이 가능하다

  • 디버깅이 힘들고 서버단의 부하를 증가시킨다는 단점이 있다

패러미터

  • 3가지 패러미터가 가능하다

    1. IN : 입력 변수
    2. OUT : 출력 변수
    3. INOUT : 외부에서 선언하고 프로시져에서 사용해 외부로 전달할 변수
  • 사용 예

(IN argName varchar(255))

2. Stored Function

값을 하나 리턴해주는 함수 서버의 특정 데이터베이스 밑에 등록

DELIMITER //
CREATE FUNCTION function_name(parameters)
RETURNS
DETERMINISTIC --또는 NON DETERMINISTIC
BEGIN
  -- statements
END //
SELECT a, function_name(argument)
FROM SOME_TABLE;
  • Procedure와 달리 결과의 집합이 아닌 하나의 값(Scala)를 반환한다

  • 모든 함수의 인자는 IN 파라미터

  • CALL로 호출하는 procedure와 달리 SQL문 안에서도 사용할 수 있다


3. Trigger

삽입/삭제/갱신 실행 전후에 특정 작업을 수행하게 함

구문

CREATE TRIGGER 트리거이름
{BEFORE|AFTER} {INSERT|UPDATE|DELETE}
ON table_name FOR EACH ROW
-- 트리거 로직
;

예시

  • sangmin_name_gender : 이름과 성별 저장 테이블
  • sangmin_name_gender_audit : 백업용 테이블
CREATE TRIGGER before_update_sangmin_name_gender
    BEFORE UPDATE ON sangmin_name_gender
    FOR EACH ROW
INSERT INTO sangmin_name_gender_audit
SET name = OLD.name,
    gender = OLD.gender,
    modified = NOW();
  • NEW : 삽입과 갱신에서만 사용가능
  • OLD : 삭제와 갱신에서만 사용가능
profile
편하게 읽기 좋은 단위의 포스트를 추구하는 개발자입니다

0개의 댓글