Question

Il y a deux ou trois déclencheurs sur une table que je souhaite conserver séparés et que je souhaite hiérarchiser.

Je pourrais n’avoir qu’un déclencheur et faire la logique là-bas, mais je me demandais s’il existait un moyen plus simple / logique de réaliser cela dans un ordre prédéfini?

Était-ce utile?

La solution

Utilisez sp_settriggerorder. Vous pouvez spécifier le premier et le dernier déclencheurs à déclencher en fonction de l'opération.

sp_settriggerorder sur MSDN

À partir du lien ci-dessus:
A. Définition de l'ordre de déclenchement d'un déclencheur DML
L'exemple suivant spécifie que le déclencheur uSalesOrderHeader sera le premier déclencheur à se déclencher après une opération UPDATE sur la table Sales.SalesOrderHeader.

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

B. Définition de l'ordre de déclenchement d'un déclencheur DDL
L'exemple suivant indique que le déclencheur ddlDatabaseTriggerLog est le premier déclencheur à se déclencher après qu'un événement ALTER_TABLE se soit produit dans la base de données AdventureWorks.

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

Autres conseils

Voir ici .

Vous pouvez utiliser sp_settriggerorder pour définir l'ordre de chaque déclencheur. sur une table.

Cependant, je dirais qu'il serait beaucoup mieux d'avoir un seul déclencheur qui fasse plusieurs choses. C’est particulièrement donc si l’ordre est important, car cette importance ne sera pas très évidente si vous avez plusieurs déclencheurs. Imaginez quelqu'un qui essaie de supporter la base de données des mois ou des années plus tard. Bien sûr, il y aura probablement des cas où vous aurez besoin de plusieurs déclencheurs ou si la conception est vraiment meilleure, mais je commencerais par supposer que vous devriez en avoir un et que vous travailliez à partir de là.

Souvenez-vous que si vous modifiez l'ordre de déclenchement, quelqu'un d'autre pourrait venir plus tard et le réorganiser. Et où documenteriez-vous l'ordre de déclenchement afin qu'un développeur de maintenance sache qu'il ne faut pas gâcher l'ordre, sinon les choses se casseront? Si deux tâches de déclenchement doivent absolument être exécutées dans un ordre spécifique, le seul chemin sûr est de les placer dans le même déclencheur.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top