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