Seu
INSERT
A instrução sempre é executada em uma transação - ou você definiu uma explicitamente ou, se não, o SQL Server usará uma transação implícita. Você está inserindo uma (ou várias) linha em sua tabela. Então - ainda dentro da transação - o
AFTER INSERT
o gatilho executa e verifica certas condições - normalmente usando o Inserted
pseudo tabela disponível dentro do gatilho, que contém as linhas que foram inseridas. Se você ligar para
ROLLBACK TRANSACTION
em seu gatilho, então sim - sua transação, com tudo o que está fazendo, é revertida e é como se INSERT
nunca aconteceu - nada aparece em sua tabela de banco de dados. Também:
FOR INSERT
é igual a AFTER INSERT
no SQL Server - o gatilho é executado depois o INSERT
declaração fez o seu trabalho. Uma coisa a ter em mente (que muitos programadores erram):o gatilho é disparado uma vez por instrução - NÃO uma vez por linha! Portanto, se você inserir 20 linhas de uma vez, o gatilho será disparado uma vez e o
Inserted
pseudo tabela dentro do gatilho contém 20 linhas. Você precisa levar isso em consideração ao escrever o gatilho - você não sempre lidando com apenas uma única linha sendo inserida!