我有一些代碼後插入觸發器可能會失敗。這樣的失敗並不重要,如果不是回滾事務。我怎樣才能將錯誤捕獲到觸發器中並讓事務的其餘部分正常執行?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