Uw INSERT instructie wordt altijd uitgevoerd in een transactie - of u hebt er expliciet een gedefinieerd, of als dat niet het geval is, gebruikt SQL Server een impliciete transactie.
U voegt één (of meerdere) rijen in uw tabel in. Dan - nog steeds binnen de transactie - de AFTER INSERT trigger wordt uitgevoerd en controleert bepaalde voorwaarden - meestal met behulp van de Inserted pseudo-tabel beschikbaar in de trigger, die de rijen bevat die zijn ingevoegd.
Als u ROLLBACK TRANSACTION . aanroept in uw trigger, dan ja - uw transactie, met alles wat het heeft gedaan, wordt teruggedraaid en het is alsof die INSERT nooit gebeurd - er verschijnt niets in uw databasetabel.
Ook:FOR INSERT is hetzelfde als AFTER INSERT in SQL Server - de trigger wordt uitgevoerd na de INSERT verklaring heeft zijn werk gedaan.
Eén ding om in gedachten te houden (wat veel programmeurs fout hebben):de trigger wordt eenmaal per statement geactiveerd - NIET één keer per rij! Dus als u 20 rijen tegelijk invoegt, wordt de trigger eenmaal geactiveerd en de Inserted pseudo-tabel in de trigger bevat 20 rijen. Je moet daar rekening mee houden bij het schrijven van de trigger - je bent niet altijd bezig met slechts een enkele rij die wordt ingevoegd!