Określenie pierwszej i ostatniej wyzwalaczy
Można określić jeden po wyzwalacze skojarzone z tabela być albo przy pierwszym po wyzwalacza lub po ostatnim wywoływany, który jest uruchamiany dla każdego INSERT, DELETE i UPDATE wyzwolenie akcji.Oczekiwanie na wątek.
To specify the order for an AFTER trigger, use the sp_settriggerorder stored procedure.sp_settriggerorder has the following options.
Opcja |
Description |
|---|---|
First |
Określa, że wyzwalacz DML jest pierwszym po wyzwalacz jest uruchamiany na wyzwalającego akcja. |
Last |
Określa, że wyzwalacz DML ostatniego po wyzwalacz jest uruchamiany na wyzwalającego akcja. |
None |
Określa, że nie określonej kolejności, w której wyzwalacz DML powinien być uruchamiany.Używany głównie do wyzwalacza z albo pierwszego lub ostatniego zresetowania. |
W poniższym przykładzie pokazano, przy użyciu sp_settriggerorder:
sp_settriggerorder @triggername = 'MyTrigger', @order = 'first', @stmttype = 'UPDATE'
Important Note: |
|---|
Pierwszy i ostatni wyzwalaczy musi być dwóch różnych DML wyzwalaczy. |
Tabela może mieć INSERT, UPDATE i DELETE wyzwalaczy zdefiniowany na nim w tym samym czasie.Każdy typ instrukcja mogą mieć swoje własne wyzwalacze imienia i nazwiska, ale nie mogą one być tego samego wyzwalaczy.
Jeśli pierwszy lub ostatni wyzwalacza dla tabela nie obejmuje wyzwalającego akcja, na przykład nie obejmujące FOR UPDATE FOR DELETE i do INSERT, to nie pierwszego lub ostatniego wyzwalacza Brak akcja.
Wyzwalacze Z INSTEAD nie może być określone jako pierwszy lub ostatni wyzwalaczy.Wyzwalacze O INSTEAD uruchomienia przed aktualizacje są wprowadzane do odpowiednich tabel.Jeśli aktualizacje są dokonywane przez wyzwalacz INSTEAD Z tabel podstawowych, aktualizacje następuje przed są uruchamiane, wszystkie wyzwalacze po zdefiniowane w tabela.Na przykład jeśli wyzwalacz INSERT Z INSTEAD z widokiem wstawia dane do tabela bazowa, a sama tabela bazowa zawiera wyzwalacz INSERT Z INSTEAD i trzy wyzwalacze po INSERT, wyzwalacz INSERT INSTEAD Z tabela bazowa jest uruchamiany zamiast Wstawianie akcja, a po Wyzwalacze dla tabela bazowa jest uruchamiany po żadnej czynności Wstawianie tabela bazowa.Aby uzyskać więcej informacji zobaczOkreślanie, kiedy uruchamiany wyzwalacz do DML.
Jeśli wyzwalacz pierwszej lub ostatniej zmiany instrukcja ALTER TRIGGER Pierwszy or Ostatni atrybut zostanie usunięte, a wartość zamówienia jest ustawiona na Brak.Zamówienie musi być zresetowane przy użyciu sp_settriggerorder.
Funkcja OBJECTPROPERTY informuje, czy wyzwalacz jest pierwszy lub ostatni wyzwalacz za pomocą właściwości ExecIsFirstTrigger and ExecIsLastTrigger.
Funkcja replikacji automatycznie generuje pierwszy wyzwalacz dla dowolnej tabeli wchodzącej w skład natychmiastowo lub kolejkowo aktualizowanej subskrypcji.Funkcja replikacji wymaga, aby jej wyzwalacz był pierwszym wyzwalaczem.Funkcja replikacji zgłasza błąd w przypadku próby uwzględnienia tabeli z pierwszym wyzwalaczem w natychmiastowo lub kolejkowo aktualizowanej subskrypcji.Próba określenia wyzwalacza jako pierwszego wyzwalacza po uwzględnieniu tabeli w subskrypcji spowoduje, że procedura składowana sp_settriggerorder zwróci błąd.Użycie instrukcji ALTER w wyzwalaczu replikacji lub użycie procedury składowanej sp_settriggerorder w celu zmiany wyzwalacza replikacji na ostatni lub rezygnacji z używania go spowoduje, że subskrypcja nie będzie działać poprawnie.
Important Note: