Din INSERT uttalande körs alltid i en transaktion - antingen har du uttryckligen definierat en, eller om inte, så kommer SQL Server att använda en implicit transaktion.
Du infogar en (eller flera) rader i tabellen. Sedan - fortfarande inne i transaktionen - AFTER INSERT trigger körs och kontrollerar vissa villkor - vanligtvis med Inserted pseudotabell tillgänglig inuti utlösaren, som innehåller raderna som har infogats.
Om du anropar ROLLBACK TRANSACTION i din trigger, då ja - din transaktion, med allt den har gjort, återställs och det är som om den där INSERT hände aldrig - ingenting dyker upp i din databastabell.
Även:FOR INSERT är samma som AFTER INSERT i SQL Server - triggern exekveras efter INSERT statement har gjort sitt jobb.
En sak att tänka på (vilket många programmerare har fel):utlösaren aktiveras en gång per uttalande - INTE en gång per rad! Så om du infogar 20 rader på en gång aktiveras utlösaren en gång och Inserted pseudotabellen inne i utlösaren innehåller 20 rader. Du måste ta hänsyn till det när du skriver utlösaren - du är inte har alltid att göra med bara en enda rad som infogas!