sql >> Databáze >  >> RDS >> Sqlserver

SQL Server – po vložení/pro vložení – vrácení zpět

Váš INSERT příkaz vždy běží v transakci – buď jste ji explicitně definovali, nebo pokud ne, pak SQL Server použije implicitní transakci.

Do tabulky vkládáte jeden (nebo více) řádek. Poté - stále uvnitř transakce - AFTER INSERT trigger se spouští a kontroluje určité podmínky - obvykle pomocí Inserted pseudo tabulka dostupná uvnitř spouštěče, která obsahuje řádky, které byly vloženy.

Pokud zavoláte ROLLBACK TRANSACTION ve vašem spouštěči, pak ano – vaše transakce se vším, co dělala, je vrácena zpět a je to jako by to INSERT nikdy se nestalo - nic se nezobrazí v tabulce databáze.

Také:FOR INSERT je stejný jako AFTER INSERT v SQL Server - trigger se provede po INSERT příkaz vykonal svou práci.

Jedna věc, kterou je třeba mít na paměti (což se mnoho programátorů mýlí):spouštěč se spustí jednou za příkazNE jednou za řádek! Pokud tedy vložíte 20 řádků najednou, spouštěč se spustí jednou a Inserted pseudo tabulka uvnitř spouštěče obsahuje 20 řádků. S tím je třeba počítat při psaní spouštěče – nejste vždy se zabývá pouze jedním vloženým řádkem!



  1. VLOŽENÍ hodnot z jedné tabulky do jiné tabulky

  2. Jak se liší PostgreSQL od MySQL?

  3. mysql (5.1)> vytvořit tabulku s názvem z proměnné

  4. Výmluvný:Volání Kam ve vztahu