Frage

Ich habe ein paar Trigger auf einer Tabelle, die ich behalten möchte separate und möchte diese priorisieren.

Ich könnte nur einen Auslöser haben und dort die Logik ausführen, aber ich habe mich gefragt, ob es einen einfacheren/logischen Weg gibt, dies zu erreichen, indem ich ihn in einer vordefinierten Reihenfolge anordne?

War es hilfreich?

Lösung

Verwenden Sie sp_settriggerorder.Sie können je nach Vorgang den ersten und letzten Auslöser angeben, der ausgelöst werden soll.

sp_settriggerorder auf MSDN

Aus dem obigen Link:
A.Festlegen der Auslösereihenfolge für einen DML-Trigger
Das folgende Beispiel gibt an, dass der Trigger uSalesOrderHeader der erste Trigger ist, der ausgelöst wird, nachdem ein UPDATE-Vorgang für die Tabelle Sales.SalesOrderHeader ausgeführt wird.

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

B.Festlegen der Auslösereihenfolge für einen DDL-Trigger
Das folgende Beispiel gibt an, dass der Trigger ddlDatabaseTriggerLog der erste Trigger ist, der ausgelöst wird, nachdem ein ALTER_TABLE-Ereignis in der AdventureWorks-Datenbank auftritt.

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

Andere Tipps

Siehe hier .

Sie können mit sp_settriggerorder die Reihenfolge der einzelnen Trigger definieren, auf einem Tisch.

Aber ich würde behaupten, dass man sich viel besser wäre, aus einem einzigen Trigger, die mehrere Dinge tun. Dies ist besonders also, wenn die Reihenfolge wichtig ist, da diese Bedeutung nicht sehr offensichtlich sein, wenn Sie mehrere Trigger haben. Stellen Sie sich vor jemand versucht, die Datenbank Monate / Jahre auf der Spur zu unterstützen. Natürlich gibt es wahrscheinlich Fälle, wo man von dort mehrere Trigger oder es ist wirklich besseres Design, aber ich würde anfangen zu haben braucht vorausgesetzt, Sie eine haben sollten und arbeiten.

rememebr, wenn Sie den Auslöser, um ändern, jemand anderes später vorbeikommen könnte und ordnen Sie es erneut. Und wo würden Sie dokumentieren, was der Auslöser, um so ein Wartungs Entwickler nicht mit der Bestellung oder die Dinge brechen zu verwirren weiß sein sollte? Wenn zwei Trigger-Aufgaben auf jeden Fall in einer bestimmten Reihenfolge durchgeführt werden müssen, ist der einzige sichere Weg ist, sie in dem gleichen Trigger zu setzen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top