create table TriggerTest(id int, a int, b int)
drop trigger if exists tri_SetA
go
create trigger tri_SetA on TriggerTest after update as
begin
if update(a)
begin
update TriggerTest set b = a + 10000
where id in (select id from inserted)
end
end
go
drop trigger if exists tri_SetB
go
create trigger tri_SetB on TriggerTest after update as
begin
if update(b)
begin
update TriggerTest set a = b + 100000000
where id in (select id from inserted)
end
end
go
delete from TriggerTest
insert TriggerTest values(1,2,3),(2,3,4)
/*
メッセージ 217、レベル 16、状態 1、プロシージャ tri_SetB、行 5 [バッチ開始行 24]
ストアド プロシージャ、関数、トリガー、またはビューの入れ子のレベルが最大値を超えました (制限 32)。
*/
--これが全く使えない
SET RECURSIVE_TRIGGERS ON
/*
メッセージ 195、レベル 15、状態 5、行 33
'RECURSIVE_TRIGGERS' は SET オプション として認識されません。
*/
exec sp_configure 'show advanced options', 1
go
reconfigure --sp_configureの設定内容を反映させる
go
exec sp_configure 'nested triggers', 1
go
reconfigure
go
begin tran
select * from TriggerTest
update TriggerTest set a = a + 10 where id = 1
select * from TriggerTest
rollback tran
begin tran
select * from TriggerTest
update TriggerTest set b = b + 10 where id = 2
select * from TriggerTest
rollback tran