-
[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테이블 모두 사용함'Database' 카테고리의 다른 글
[Oracle] 내장함수 (0) 2010.10.08 [SQLServer] Fuction.............. (0) 2010.06.19 [SQLServer] 문자값을 테이블에 저장해야되는데 숫자로 값을 잘못 저장했을 경우 (0) 2010.04.30 [SQL] 계산된컬럼... (0) 2009.09.02 SQLServer 2008 sp1 출시 (0) 2009.05.12