ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [T-SQL] Trigger에 대한 이해..
    Database 2010. 5. 8. 17:25

     트리거란? 특정 이벤트시 자동 동작되는 특수한 형태의 저장 프로시저..

    트리거의 종류에는 DDL 트리거와 DML 트리거로 구분할 수 있다. DML 트리거는 INSERT, UPDATE, DELETE에 의해서 데이터 변경 작업이 일어날 때 동작하는 트리거이고, DDL트리거의는 DDL문에 의해서 동작하는 트리거로 AFTER 트리거와 INTEAD OF 트리거로 나뉜다.

    아래의 경우에는 DML 트리거이다.

    USE master
    IF DB_ID('TESTDB') IS NOT NULL
    DROP DATABASE TESTDB
    GO
    CREATE DATABASE TESTDB
    
     
    
    USE TESTDB
    CREATE TABLE TEST10( ID INT, NAME CHAR(30) )
    CREATE TABLE TEST20( ID INT, NAME CHAR(30) )
    
    IF OBJECT_ID('T_TEST10_INS') IS NOT NULL
    DROP TRIGGER T_TEST10_INS
    GO
    
    -- INSERTE 트리거
    CREATE TRIGGER T_TEST10_INS ON TEST10
    FOR INSERT
    AS
    INSERT TEST10
    SELECT * FROM INSERTED
    
    IF OBJECT_ID('T_TEST10_UPD') IS NOT NULL
    DROP TRIGGER T_TEST10_UPD
    GO
    
    -- UPDATE 트리거
    CREATE TRIGGER T_TEST10_UPD ON TEST10
    FOR UPDATE
    AS
    UPDATE TEST20
    SET TEST20.NAME = INSERTED.NAME
    FROM INSERTED
    
    IF OBJECT_ID('T_TEST10_DEL') IS NOT NULL
    DROP TRIGGER T_TEST10_DEL
    GO
    
    -- DELETE 트리거
    
    CREATE TRIGGER T_TEST10_DEL ON TEST10
    FOR DELETE
    AS
    DELETE FROM TEST20
    WHERE ID = (SELECT ID FROM DELETED)
    

    ※ inserted와 deleted 테이블
     inserted는 INSERT 문에 의해서 수행되는 값들이 저장되고, 
     deleted는 DELETE 문에 의해서 삭제되는 데이터가 저장됨
     UPDATE문의 경우에는 내부적으로 DELETE 후에 INSERT 문이 수앵되는 순서로 처리되기 때문에 inserted테이블과 deleted테이블 모두 사용함

Designed by Tistory.