Inquiridor
Ajuda com Trigger

Pergunta
-
Fala pessoal tudo blz
o cenário é o seguinte:
Tenho uma tabela com vários campos.
Preciso montar um trigger quando o campo X for atualizado para valor 0 ou 1 (é um status de um componente) ele disparar a trigger.
Tem como montar um trigger de update apontando um campo específico?
Abs
Todas as Respostas
-
Boa tarde Thiago tem sim, basta utilizar a função update
Create Trigger dbo.TR_AtualizaCampox ON SUATABELA For Update as
Begin
If UPDATE(CAMPOX)
Begin
If (Select CAMPOX From INSERTED) = 0
Begin
-- Procedimentos a serem executados caso o valor seja 0
end
else
Begin
-- Procedimentos a serem executados caso o valor seja 1
end
End
end
Espero ter ajudado
-
na verdade esse procedimento so funciona se tiver um update por vez se mandar um bloco vai ter problemas o ideal e colocar um join na inserted por exemplo
Create Trigger TTT on Tabela
For Update
As
If Update(Campo)
Update Tabela Set Campo = Case when CampoX = 0 then Valor Else OutroValor End
From Tabela A inner join inserted on inserted.chave = A.Chave
Abs;
-
Thiago,
Sim, você pode montar, mas deixa eu entender, este processo de atualização será indiviual por registros, ou um bloco de registros serão alterados?
Pois todo trigger quando disparado ele trabalha como se fosse um bloco de transações, por isso se você por atualizar 30 registros de uma só vez, você não conseguir definir um valor para cada linha.
Você esta utilizando alguma aplicação?
Dependendo da sua estrutura(número de registros que serão processados) é melhor fazer este procedimento direto na aplicação ao invés de criar um trigger para consumir mais recursos do banco.
Seguindo os exemplos fornecidos pelo Marcelo e também o do Anderson, você pode ter uma base.