트리거
트리거(Trigger)란, 방아쇠를 당기다 라는 뜻인데, 방아쇠를 당기면 연쇄적으로 단계가 착착착 일어나서 최종적으로 총알이 발사 되듯이, 어떤 일이 발생하면 어떤일이 자동으로 발생되는 의미가 있다.
즉, SQL에서 트리거란 특정 테이블에 INSERT, DELETE, UPDATE가 발생했을 때 다른 이벤트를 처리하도록 하기위한 방법이다.
코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | CREATE TRIGGER [NAME_OF_TRIGGER] ON [TABLE] FOR [INSERT | DELETE | UPDATE] AS BEGIN -- INSERTED에서 USER_ID를 대입하고 싶을때 DECLARE @USER_ID NVARCHAR(20) SELECT @USER_ID = USER_ID FROM INSERTED -- INSERT INSERT INTO ADDRESS VALUES(@USER_ID @NO_PHONE, GETDATE()) -- DELETE SELECT * FROM DELETED --UPDATE UPDTAE [TABLE1] SET NO_PHONE = @NO_PHONE WHERE USER_ID = @USER_ID END | cs |
설명
MS-SQL에서는 삽입, 삭제될 행을 테이블로 관리하고있는데, 그 테이블이 INSERTED, DELETED테이블이다.
UPDATE는 UPDATED를 사용하는것이 아니라 UPDATE는 내부적으로 DELETE후 INSERT하기 때문에 DELETED테이블과, INSERTED테이블을 사용한다.
예를 들어서 기존 값이 UPDATE되었다면, 기존 값은 DELETED에 들어가고, 새로운 값은 INSERTED에 들어가게된다.
따라서 업데이트 이전의 값과 이후의 값을 DELETED와 INSERTED 테이블을 통해서 확인할 수 있다.
'SQL > MS-SQL' 카테고리의 다른 글
일반집계함수 WINDOW FUNCTION (0) | 2017.09.07 |
---|---|
순위관련 WINDOW FUNCTION (0) | 2017.09.07 |
커서(Cursor) (0) | 2017.09.06 |
UNION ALL로 소계, 합계 구하기 (0) | 2017.09.05 |
CHOOSE, IIF 논리함수 (0) | 2017.09.05 |