Вашият INSERT
винаги се изпълнява в транзакция - или сте дефинирали изрично такава, или ако не, тогава SQL Server ще използва имплицитна транзакция.
Вмъквате един (или няколко) реда в таблицата си. След това - все още вътре в транзакцията - AFTER INSERT
тригерът се изпълнява и проверява определени условия - обикновено използвайки Inserted
псевдо таблица, налична вътре в тригера, която съдържа редовете, които са били вмъкнати.
Ако извикате ROLLBACK TRANSACTION
във вашия тригер, тогава да - вашата транзакция, с всичко, което е правила, е отменена и сякаш този INSERT
никога не се е случвало - нищо не се показва в таблицата на вашата база данни.
Също така:FOR INSERT
е същото като AFTER INSERT
в SQL Server - тригерът се изпълнява след INSERT
изявлението си свърши работата.
Едно нещо, което трябва да имате предвид (което много програмисти грешат):тригерът се задейства веднъж на израз -НЕ веднъж на ред! Така че, ако вмъкнете 20 реда наведнъж, тригерът се задейства веднъж и Inserted
псевдо таблицата вътре в тригера съдържа 20 реда. Трябва да вземете това предвид, когато пишете тригера - вие не несте винаги има работа само с вмъкване на един ред!