Como você priortize vários gatilhos de uma tabela?
-
01-07-2019 - |
Pergunta
Eu tenho um par de disparadores em uma tabela que eu quero manter separado e gostaria de priortize-los.
Eu poderia ter apenas uma desencadeada e não a lógica, mas eu estava me perguntando se havia uma manutenção mais fácil, lógico maneira de realizar isso de tê-la em uma pré-definidos, a fim ?
Solução
Use sp_settriggerorder.Você pode especificar o primeiro e o último gatilho para disparar, dependendo da operação.
A partir do link acima:
A.Definindo a ordem de disparo de um gatilho DML
O exemplo a seguir especifica que o gatilho uSalesOrderHeader ser o primeiro gatilho para disparar depois de uma operação de ATUALIZAÇÃO ocorre em Vendas.Tabela SalesOrderHeader.
USE AdventureWorks; GO sp_settriggerorder @triggername= 'Sales.uSalesOrderHeader', @order='First', @stmttype = 'UPDATE';
B.Definindo a ordem de disparo de um gatilho DDL
O exemplo a seguir especifica que o gatilho ddlDatabaseTriggerLog ser o primeiro gatilho para disparar depois de um ALTER_TABLE ocorre no banco de dados AdventureWorks.
USE AdventureWorks; GO sp_settriggerorder @triggername= 'ddlDatabaseTriggerLog', @order='First', @stmttype = 'ALTER_TABLE', @namespace = 'DATABASE';
Outras dicas
Consulte aqui .
Você pode usar sp_settriggerorder para definir a ordem de cada gatilho sobre uma mesa.
No entanto, eu diria que você seria muito melhor ter um único gatilho que faz várias coisas. Esta é especialmente isso, se a ordem é importante, uma vez que a importância não será muito óbvio se você tiver vários gatilhos. Imagine alguém tentando apoiar os meses de banco de dados / anos para baixo da pista. É claro que há uma probabilidade de haver casos em que você precisa ter vários gatilhos ou ele realmente é melhor design, mas eu começar a assumir que você deve ter um e trabalhar a partir daí.
Rememebr se você alterar a ordem de disparo, alguém poderia vir por mais tarde e reorganizar-lo novamente. E onde você documentar o que a ordem de disparo deve ser assim um desenvolvedor de manutenção não sabe mexer com a ordem ou as coisas vão quebrar? Se duas tarefas de gatilho definitivamente devem ser executadas em uma ordem específica, a única via segura é colocá-los no mesmo gatilho.