sql >> Databasteknik >  >> RDS >> Sqlserver

SQL Server - Efter infogning/ för infogning - Återställ

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!



  1. Hitta funktionellt beroende

  2. Förstå QUOTED_IDENTIFIER

  3. MYSQL tar inte emot data från PHP

  4. MySQL - välj data från databasen mellan två datum