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

SQL Server - Efter Indsættelse/ Til Indsættelse - Tilbageføring

Din INSERT sætning kører altid i en transaktion - enten har du eksplicit defineret en, eller hvis ikke, så vil SQL Server bruge en implicit transaktion.

Du indsætter en (eller flere) række i din tabel. Derefter - stadig inde i transaktionen - AFTER INSERT trigger kører og kontrollerer visse forhold - typisk ved hjælp af Inserted pseudo-tabel tilgængelig i triggeren, som indeholder de rækker, der er blevet indsat.

Hvis du kalder ROLLBACK TRANSACTION i din trigger, så ja - din transaktion, med alt det, den har foretaget, er rullet tilbage og det er som om den INSERT aldrig sket - intet dukker op i din databasetabel.

Også:FOR INSERT er det samme som AFTER INSERT i SQL Server - triggeren udføres efter INSERT statement har gjort sit arbejde.

En ting at huske på (som mange programmører tager fejl):udløseren udløses én gang pr. erklæring - IKKE en gang pr række! Så hvis du indsætter 20 rækker på én gang, udløses udløseren én gang og Inserted pseudo-tabel inde i triggeren indeholder 20 rækker. Det skal du tage højde for, når du skriver triggeren - det er du ikke beskæftiger sig altid med, at der kun er indsat en enkelt række!



  1. Hjælp til at gribe (INDRE?) JOIN

  2. Fjern unødvendig Woocommerce billedmeta

  3. SQL - Hvordan gemmer og navigerer man i hierarkier?

  4. SQL how-grupper efter regnskabskvartal og år med et datofelt