SQL/PL. SQL

트리거(trigger)

행복하게사는게꿈 2020. 4. 25. 13:41

트리거란?

 

테이블에 어떤 이벤트가 발생했을 때, 자동으로 사용자가 정의한 PL/SQL 명령을 실행 할 수 있는 구문

 


트리거 Syntax

CREATE OR REPLACE TRIGGER 트리거명 [BEFORE | AFTER]

EVENT(INSERT, DELETE, UPDATE 등) ON 테이블명

FOR EACH ROW  // 행 트리거

DECLARE

     AFTER_CODE VARCHAR2(5);    // 선언부(사용할 변수 선언)
  
BEGIN 

	IF INSERTING THEN

		SELECT 변환 후 코드 값

   		INTO AFTER_CODE
   
   		FROM 코드 매핑 테이블
   
   		WHERE 변환전 코드 값 := NEW.코드 컬럼
   
		INSERT INTO 로그 테이블명( 컬럼명1, 컬럼명2, ..., 컬럼명N) VALUES ( VALUES1, VALUES2, ...);

	ELSIF DELETING THEN ..
    
    ELSE
    
    	IF UPDATING('코드1 컬럼')
        	OR UPDATING('코드2 컬럼')
            THEN
            ...
        ELSIF UPDATING('텍스트 컬럼')
        	THEN
            ...
        ELSIF UPDATING
        	THEN
            ...
            END IF;
       	END IF;
        
    EXCEPTION  // 오류처리
    
    WHEN NO_DATA_FOUND THEN ...  // 등록된 코드에 매핑 코드가 없을 경우
    
    WHEN DUP_VAL_ON_INDEX THEN ... // 테이블 등록 시 동일 PK 데이터 존재
    
END