Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

SQL Server - Após Inserir/Para Inserir - Reversão


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!