Arquivo

Posts Tagged ‘SQL Server’

SQL Server – Rollback Transaction em Triggers

O que acontece se executar o comando ROLLBACK TRANSACTION em uma Trigger no SQL Server? A primeira coisa que passa na cabeça é: o que foi iniciado na transação será desfeito! Sim, isso está correto. Mas se pensarmos um pouco mais além: e se após este comando houver outros comandos, eles serão executados? E se estes comandos causarem o disparo de outra trigger, ela será disparada? E os outros comandos que que estão no batch após o comando que originou o disparo da trigger, serão executados?

O comportamento é seguinte:

  • As alterações feitas até a execução do ROLLBACK TRANSACTION são desfeitas;
  • A trigger continua a execução com os demais comandos que houverem após o ROLLBACK, mas nenhuma outra trigger será disparada;
  • Os demais comandos que houverem no batch também não serão executados.

Ou seja, imaginemos o seguinte cenário: em uma trigger é implementada uma regra de negócio. Regra esta que em determinada condição precisa interromper a transação. Mas você gostaria de gravar um trace da execução dessa trigger. Ok! Após o ROLLBACK TRANSACTION é possível executar um comando INSERT para inserir o trace em outra tabela!

Se quiserem saber mais sobre o comando ROLLBACK TRANSACTION acessem o MSDN!

Abraços!

Categorias:SQL Server Tags:,