Il tuo INSERT
L'istruzione viene sempre eseguita in una transazione:se ne è stata definita una in modo esplicito o, in caso contrario, SQL Server utilizzerà una transazione implicita.
Stai inserendo una (o più) righe nella tabella. Quindi - sempre all'interno della transazione - il AFTER INSERT
trigger esegue e controlla determinate condizioni, in genere utilizzando Inserted
pseudo tabella disponibile all'interno del trigger, che contiene le righe che sono state inserite.
Se chiami ROLLBACK TRANSACTION
nel tuo trigger, quindi sì:la tua transazione, con tutto ciò che sta facendo, viene rollback ed è come se quel INSERT
mai successo - non viene visualizzato nulla nella tabella del database.
Inoltre:FOR INSERT
è lo stesso di AFTER INSERT
in SQL Server:il trigger viene eseguito dopo il INSERT
dichiarazione ha fatto il suo lavoro.
Una cosa da tenere a mente (che molti programmatori sbagliano):il trigger viene attivato una volta per istruzione - NON una volta per riga! Quindi, se inserisci 20 righe contemporaneamente, il trigger viene attivato una volta e il Inserted
la pseudo tabella all'interno del trigger contiene 20 righe. Devi tenerne conto quando scrivi il trigger:tu non sempre a che fare con una sola riga inserita!