Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

SQL Server - Dopo l'inserimento/per l'inserimento - Rollback

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!