Dicas T-SQL – A Trigger também faz ROLLBACK?

Fala pessoal,

Nesse post vamos responder a seguinte pergunta:

“A Trigger também faz ROLLBACK?”

(A) SIM

(B) NÃO

Antes de continuar a leitura do post, pensa aí na sua resposta OK.


Trigger x Rollback

No post anterior também falei um pouco sobre Trigger com uma dica muito bacana. Se você não viu, #ficaadica

https://luizlima.net/dicas-t-sql-a-trigger-executa-uma-vez-para-cada-linha-alterada/

Hoje vou compartilhar mais uma dica que pode ser uma dúvida de muitas pessoas:

“A Trigger também faz ROLLBACK?”

Então vamos para o nosso exemplo! #gogogo


Exemplo:

Vamos criar uma tabela “Produto” e outra tabela de auditoria chamada “LogAlteracao”.

Depois colocar uma trigger de UPDATE na tabela “Produto”, que vai inserir o valor antigo na tabela “LogAlteracao”.

OBS: Repare que na trigger utilizei o “deleted” para pegar o valor antigo. Se eu quisesse utilizar os novos valores, bastaria utilizar o “inserted”.

Agora vamos inserir alguns registros na tabela “Produto”. Repare que a tabela “LogAlteracao” permanece vazia, pois ainda não fizemos nenhum UPDATE.

Agora vamos fazer um UPDATE!!!

Repare que ao executar o UPDATE, o SQL Server informou que uma linha foi afetada pelo UPDATE na tabela “Produto” e que mais uma linha foi afetada com o INSERT na tabela “LogAlteracao”, que foi feito pela trigger.

A tabela “LogAlteracao” armazenou o valor antigo “Iphone 25” e a tabela “Produto” ficou com o valor atualizado “Iphone 13”.

Até aqui tudo beleza. Agora vamos abrir uma transação com o BEGIN TRAN e fazer um novo UPDATE.

Repare que o nome do produto foi alterado na tabela “Produto” e mais uma linha foi inserida na tabela “LogAlteracao”.

Agora eu te pergunto: se eu fizer um ROLLBACK, ele também irá desfazer o INSERT da trigger na tabela “LogAlteracao”???

Como podemos ver, a TRIGGER faz SIM o ROLLBACK também!!! Pois o ROLLBACK voltou o valor antigo na tabela “Produto” e removeu a última linha da tabela “LogAlteracao”.

Logo, a RESPOSTA é a letra “(A) SIM”!!!


Espero que tenha gostado e que isso também possa ser útil no seu dia a dia. Até o próximo post!

Me siga no LinkedIn e YouTube para ficar por dentro das novidades.

Abraço,

Luiz Vitor França Lima

Consultor SQL Server

Deixe uma resposta