Twój INSERT
Instrukcja zawsze działa w transakcji — albo została zdefiniowana jawnie, albo jeśli nie, to SQL Server użyje transakcji niejawnej.
Wstawiasz jeden (lub wiele) wierszy do tabeli. Następnie - nadal wewnątrz transakcji - AFTER INSERT
wyzwalacz uruchamia i sprawdza określone warunki - zwykle przy użyciu Inserted
pseudotabela dostępna wewnątrz wyzwalacza, która zawiera wstawione wiersze.
Jeśli zadzwonisz ROLLBACK TRANSACTION
w wyzwalaczu, a następnie tak – transakcja, ze wszystkim, co robiła, jest cofana i to tak, jakby to INSERT
nigdy się nie zdarzyło - nic nie pojawia się w tabeli bazy danych.
Także:FOR INSERT
jest tym samym co AFTER INSERT
w SQL Server - wyzwalacz jest wykonywany po INSERT
oświadczenie spełniło swoje zadanie.
Należy pamiętać o jednej rzeczy (co wielu programistów się myli):wyzwalacz jest uruchamiany raz na instrukcję - NIE raz w rzędzie! Jeśli więc wstawisz 20 wierszy naraz, wyzwalacz zostanie wyzwolony raz i Inserted
pseudotabela wewnątrz wyzwalacza zawiera 20 wierszy. Musisz wziąć to pod uwagę podczas pisania wyzwalacza - nie zawsze mamy do czynienia z wstawianiem tylko jednego wiersza!