Domanda

Ho un paio di trigger su una tabella che voglio mantenere separato e vorrei prioritario di loro.

Potrei avere un solo trigger e non la logica, ma mi chiedevo se c'era un più facile/modalità logica di realizzazione di questo di avere in un ordine prestabilito ?

È stato utile?

Soluzione

Utilizzare sp_settriggerorder.È possibile specificare il primo e l'ultimo trigger a seconda dell'operazione.

sp_settriggerorder su MSDN

Dal link sopra:
A.Impostazione di un ordine di esecuzione di un trigger DML
L'esempio seguente specifica che attivano usalesorderheader comporta essere il primo trigger dopo un'operazione di AGGIORNAMENTO si verifica sulle Vendite.Tabella SalesOrderHeader.

USE AdventureWorks;
GO
sp_settriggerorder 
    @triggername= 'Sales.uSalesOrderHeader', 
    @order='First', 
    @stmttype = 'UPDATE';

B.Impostazione di un ordine di esecuzione per un trigger DDL
L'esempio seguente specifica che attivano ddlDatabaseTriggerLog essere il primo trigger dopo un evento ALTER_TABLE nel database AdventureWorks.

USE AdventureWorks;
GO
sp_settriggerorder 
    @triggername= 'ddlDatabaseTriggerLog', 
    @order='First', 
    @stmttype = 'ALTER_TABLE', 
    @namespace = 'DATABASE';

Altri suggerimenti

Vedere qui.

È possibile utilizzare sp_settriggerorder per definire l'ordine di ogni trigger su un tavolo.

Tuttavia, direi che sarebbe molto meglio avere un singolo trigger che fa più cose.Questo è in particolare quindi, se l'ordine è importante, dal momento che l'importanza non sarà molto evidente, se si dispone di più di trigger.Immaginate che qualcuno cerca di sostenere il database, mesi, anni giù la pista.Naturalmente ci possono essere casi in cui è necessario avere più di un trigger o è davvero un design migliore, ma mi piacerebbe iniziare supponendo che si dovrebbe avere un lavoro.

Rememebr se si modifica il grilletto ordine, qualcun altro potrebbe venire più tardi e riorganizzare di nuovo.E dove vorresti documento che il trigger deve essere così una manutenzione sviluppatore sa che non si scherza con l'ordine o le cose si rompono?Se due trigger attività sicuramente devono essere eseguite in un ordine specifico, l'unica strada sicura è di metterli nella stessa attivazione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top