У меня есть код в триггере после вставки, который может потенциально не работать. Такой отказ не имеет решающего значения и должен не откат транзакции. Как я могу уловить ошибку внутри триггера и выполнить остальную транзакцию в обычном режиме?TSQL make trigger fail silent
В приведенном ниже примере показано, что я имею в виду. Триггер намеренно создает условие ошибки, в результате чего исходная вставка («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);
Почему Try/Catch не работает? – cjk
@ck: потому что нарушения ограничений внутри триггеров обрекают транзакции. – Quassnoi