F
forgot2002
Unregistered / Unconfirmed
GUEST, unregistred user!
设计两个表(都只有一个字段):
Test1表:name1 varchar(20) null;
Test2表:name2 varchar(20) null;
Test1触发器:
CREATE TRIGGER test2_Insert ON [test1]
FOR Insert
AS
insert into test2 Select name1 from Inserted
Test2触发器:
CREATE TRIGGER test1_Insert ON [test2]
FOR Insert
AS
Insert into test1 Select name2 from Inserted
这样两个触发器就是嵌套起来的,由于这样就造成了死循环,超过32层嵌套SQLServer是不
允许操作的,所以两个表都无法进行insert操作。我的要求是两个表都能insert,而且触发了
另外一个表的Insert时,不会再次触发其insert触发器。
目前我的解决办法是直接修改服务器的默认设置:
EXEC sp_configure 'nested triggers', 0
GO
RECONFIGURE
GO
但我其实不想这样,因为我害怕修改默认的设置会有隐患,难道不能在触发器中判断触发条件吗?
理论上应该可以,但我试来试去都试不出来,请兄弟们帮帮我好吗?
Test1表:name1 varchar(20) null;
Test2表:name2 varchar(20) null;
Test1触发器:
CREATE TRIGGER test2_Insert ON [test1]
FOR Insert
AS
insert into test2 Select name1 from Inserted
Test2触发器:
CREATE TRIGGER test1_Insert ON [test2]
FOR Insert
AS
Insert into test1 Select name2 from Inserted
这样两个触发器就是嵌套起来的,由于这样就造成了死循环,超过32层嵌套SQLServer是不
允许操作的,所以两个表都无法进行insert操作。我的要求是两个表都能insert,而且触发了
另外一个表的Insert时,不会再次触发其insert触发器。
目前我的解决办法是直接修改服务器的默认设置:
EXEC sp_configure 'nested triggers', 0
GO
RECONFIGURE
GO
但我其实不想这样,因为我害怕修改默认的设置会有隐患,难道不能在触发器中判断触发条件吗?
理论上应该可以,但我试来试去都试不出来,请兄弟们帮帮我好吗?