[ MS SQL.Trigger - 종류 ]

 

1. 중첩 트리거 : 트리거가 동작해서 다른 테이블의 값을 변경한다면 이런 동작을 CASCASE INSERT(또는 UPDATE, DELETE) 라고 한다.

                            이렇게 CASCADE 동작을 할 때 대상이 되는 테이블에 또 트리거가 걸려 있다면 이 트거리는 도 동작 하게 된다.

                            이런식으로 중첩 트리거는 SQL7.0에서 32단계 까지 동작 할 수 있다.

    - 중첩트리거 중지 :  sp_configure ‘nested trigger’, 0                       à 1로 해주면 실행 됨

                                       GO

                                       reconfigure

                                       GO

 

2. 재귀 트리거(Recursive Trigger) : 트리거가 자기 자신을 다시 부르는 것을 재귀 트리거라고 한다. 이때 무한 루프에 빠지지 않도록 빠져 나오는 루틴을

                             처리해야만 한다. 재귀트리거는 default 가 off 되어 있다.

                             - on :   exec sp_dboption ‘db_name’, ‘recursive triggers’, true

                             - 재귀 트리거 빠져 나오기 : @@nestlevel system 변수 사용

                             - 예)  CREATE   TRIGGER   trgInsert on t3  for insert as

                                      set nocount on

                                     declare @id int,    @level int;

                                     select @id = object_id(‘trgInsert’)

                                     select @level = trigger_nestlevel(@id)

                                     if @level > 5

                                        begin

                                             set nocount off

                                             return

                                        end

                                     ……..

                                     set nocount off

 

* 트리거가 계속 진행시 32단계 까지 진행 후 SQL 서버가 취소를 시키고 모든 트랜잭션이 취소된다..   

 

'(DB) MS SQL > Trigger' 카테고리의 다른 글

MS SQL.Trigger - 예제2  (0) 2017.01.27
MS SQL.Trigger - 예제1  (0) 2017.01.27
MS SQL.Trigger - 특징  (0) 2017.01.27
MS SQL.Trigger - 해법  (0) 2017.01.27
MS SQL.Trigger - 문법  (0) 2017.01.27
Posted by 농부지기
,