MS-SQL

중첩트리거(nested trigger), 재귀트리거(recursive trigger)

쿠카이든 2022. 12. 10. 23:27
728x90
1. 중첩 트리거 : 트리거가 동작해서 다른 테이블의 값을 변경한다면 이런 동작을 CASCASE INSERT(또는 UPDATE, DELETE) 라고 한다.

  이렇게 CASCADE 동작을 할 때 대상이 되는 테이블에 또 트리거가 걸려 있다면 이 트리거도 동작 하게 된다. 이런식으로 중첩 트리거는 SQL7.0에서 32단계 까지 동작 할 수 있다.

 

sp_configure ‘nested trigger’, 0;        -- 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 서버가 취소를 시키고 모든 트랜잭션이 취소된다..   

 

출처: https://farmerkyh.tistory.com/552

 

MS SQL.Trigger - 종류

[ MS SQL.Trigger - 종류 ] 1. 중첩 트리거 : 트리거가 동작해서 다른 테이블의 값을 변경한다면 이런 동작을 CASCASE INSERT(또는 UPDATE, DELETE) 라고 한다. 이렇게 CASCADE 동작을 할 때 대상이 되는 테이블에

farmerkyh.tistory.com

 

728x90

'MS-SQL' 카테고리의 다른 글

GROUPING, GROUPING_ID 함수  (0) 2022.12.11
전체 텍스트 인덱스, 전체 텍스트 카달로그  (0) 2022.12.11
AFTER 트리거, INSTEAD OF 트리거  (0) 2022.12.08
트리거란? (+예제)  (0) 2022.12.08
커서란? (+예제)  (0) 2022.12.08