我有一些代码后插入触发器可能会失败。这样的失败并不重要,如果不是回滚事务。我怎样才能将错误捕获到触发器中并让事务的其余部分正常执行?TSQL使触发器无提示失败
下面的例子显示了我的意思。触发器故意创建一个错误条件,结果是原始插入(“1”)永远不会插入到表中。 Try/Catch似乎没有办法。类似的,older stack overflow question没有得到答案,除了“首先防止错误发生” - 这并不总是可行的。
还有其他想法吗?
create table test
(
a int not null
);
go
create trigger testTrigger on test
after insert as
begin
insert into test select null;
end;
go
insert into test values (1);
为什么试试/ Catch不工作? – cjk 2010-01-29 15:41:04
@ck:因为触发器内部的约束违规不符合事务。 – Quassnoi 2010-01-29 17:11:43