[ 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 |