ho qualche codice in un trigger di inserimento, dopo che potenzialmente possono fallire. Tale errore non è fondamentale e dovrebbe non eseguire il rollback della transazione. Come posso intercettare l'errore all'interno del trigger e far eseguire normalmente il resto della transazione?TSQL make grilletto fallire in silenzio
L'esempio seguente mostra cosa intendo. Il trigger crea intenzionalmente una condizione di errore con il risultato che l'inserimento originale ("1") non si inserisce mai nella tabella. Try/Catch non sembra fare il trucco. Una simile, older stack overflow question non ha dato una risposta fatta eccezione per "evitare che l'errore si verificano in primo luogo" - che non è sempre possibile/facile.
Altre idee?
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);
Perché provato/Catch non funziona? – cjk
@ck: poiché le violazioni dei vincoli all'interno dei trigger provocano le transazioni. – Quassnoi