Translate

quarta-feira, 22 de agosto de 2012

Desabilitar e Habilitar Trigger no SQL Server

Essa semana eu precisei fazer uma manutenção no banco de dados de um cliente novo, que por engano, acabou cadastrando dados da empresa "A" na empresa "B", até então uma tarefa simples se não tivesse uma Trigger no meio da história que mantém uma determinada data atualizada conforme a regra de negócio do sistema.

Após executar o script abaixo no ambiente de testes, ocorreu um alerta no SSMS: Warning: Null value is eliminated by an aggregate or other SET operation e o campos em questão havia ficado zerado, ou seja, bug!

Entendendo melhor o comportamento da Trigger, a solução foi desabilitar e habilitar a trigger durante a execução do script, fiocu assim:
USE NOME_BANCO
GO

DECLARE @EMPRESA_ORIGEM UNIQUEIDENTIFIER ='{E79572FB-80EF-44E7-ACD5-F8771AFCBA8D}';
DECLARE @EMPRESA_DESTINO UNIQUEIDENTIFIER ='{E03E1A64-AC16-4CD3-AB87-CF2A62264D22}';

-- Desabilita a Trigger 
ALTER TABLE TABELA DISABLE TRIGGER TABELA_AIUD0;

-- Move os dados para outra empresa
UPDATE TABELA SET EMPRESA_ID = @EMPRESA_DESTINO WHERE EMPRESA_ID = EMPRESA_ORIGEM;

-- Habilita a Trigger
ALTER TABLE TABELA ENABLE TRIGGER TABELA_AIUD0;

Nenhum comentário:

Postar um comentário

Deixe seu comentário aqui.