Eu tenho uma Object
tabela que é preenchida a partir de um serviço Integrado ( que eu posso alterar se necessário ) de outro banco de dados. Em certos pontos, precisamos adicionar manualmente as postagens em outra tabela, ObjectObjectGroup (ObjectId, ObjectGroupId)
que é necessária se Object.ObjectType
tiver um determinado valor inteiro. Como o serviço de integração não lida com esse tipo de atualização, estou pensando em adicionar um gatilho à tabela Object, que no pseudo-código seria o seguinte:
if Object.ObjectType = 10
begin
if Object.ObjectNumber like '<string pattern>'
begin
insert into ObjectObjectGroup values...
end
end
Essa configuração é sensata ou existe uma maneira melhor em termos de desempenho?
fonte
Os gatilhos são uma ferramenta poderosa e, como qualquer outra ferramenta, você precisa ter cuidado ao usá-los.
Quando você cometer um erro em um gatilho, as coisas podem dar errado DRASTICAMENTE e, a menos que você esteja executando traços, não perceberá ...
Eles 'magicamente' alteram / inserem / excluem dados que o usuário do banco de dados (o aplicativo atual / qualquer aplicativo futuro / um desenvolvedor fazendo uma atualização única) não realizou / pretendeu.
O grande problema é que, depois que você criou o gatilho, não é óbvio para outros desenvolvedores / usuários que um gatilho está lá e o que ele faz.
Dito isto, eles são uma ótima ferramenta para manter a integridade de seus dados e para uma verdadeira auditoria de alterações.
Você precisa se perguntar se a lógica que deseja colocar no gatilho se encaixa melhor no (s) aplicativo (s) ou no banco de dados, ponderando os riscos de ambos os lados (o que acontece se um novo aplicativo aparecer e não aplicar isso? regra?)
fonte