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 ?

Foi útil?

Solução

Use sp_settriggerorder.Você pode especificar o primeiro e o último gatilho para disparar, dependendo da operação.

sp_settriggerorder no MSDN

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top