Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
van toepassing op:SQL Server
Azure SQL Database
Azure SQL Managed Instance
SQL-database in Microsoft Fabric
U kunt opgeven dat een van de AFTER-triggers die aan een tabel zijn gekoppeld, de eerste AFTER-trigger of de laatste AFTER-trigger is die voor elk van de activerende acties INSERT, DELETE en UPDATE wordt geactiveerd. De AFTER-triggers die worden geactiveerd tussen de eerste en laatste triggers, worden uitgevoerd in niet-gedefinieerde volgorde.
Als u de volgorde voor een AFTER-trigger wilt opgeven, gebruikt u de sp_settriggerorder opgeslagen procedure. sp_settriggerorder heeft de volgende opties.
| Optie | Beschrijving |
|---|---|
| Eerste | Hiermee specificeert u dat de DML-trigger de eerste AFTER-trigger is die is geactiveerd voor een triggeractie. |
| laatste | Hiermee specificeert u dat de DML-trigger de laatste AFTER-trigger is die wordt geactiveerd bij een triggeractie. |
| Geen | Hiermee geeft u op dat er geen specifieke volgorde is waarin de DML-trigger moet worden geactiveerd. Wordt voornamelijk gebruikt om een trigger opnieuw in te stellen van eerste of laatste. |
In het volgende voorbeeld ziet u het gebruik van sp_settriggerorder:
sp_settriggerorder @triggername = 'MyTrigger', @order = 'first', @stmttype = 'UPDATE'
Belangrijk
De eerste en laatste triggers moeten twee verschillende DML-triggers zijn.
Op een tabel kunnen tegelijkertijd INSERT, UPDATE en DELETE-triggers worden gedefinieerd. Elk instructietype kan een eigen eerste en laatste trigger hebben, maar ze kunnen niet dezelfde triggers zijn.
Als de eerste of laatste trigger die voor een tabel is gedefinieerd een activerende actie niet omvat, bijvoorbeeld doordat deze niet geldt voor FOR UPDATE, FOR DELETE of FOR INSERT, is er geen eerste of laatste trigger voor de ontbrekende activerende acties.
INSTEAD OF triggers kunnen niet worden opgegeven als eerste of laatste triggers. INSTEAD OF triggers worden uitgevoerd voordat updates worden doorgevoerd in de onderliggende tabellen. Als er updates worden uitgevoerd door een INSTEAD OF-trigger op onderliggende tabellen, worden de updates uitgevoerd voordat enige AFTER-triggers die op de tabel zijn gedefinieerd, worden geactiveerd. Als bijvoorbeeld een IN PLAATS VAN INSERT-trigger op een weergave gegevens invoegt in een basistabel en de basistabel zelf een IN PLAATS VAN INSERT-trigger en drie AFTER-INSERT-triggers heeft, wordt de IN PLAATS VAN INSERT-trigger op de basistabel geactiveerd in plaats van de insertactie, en worden de AFTER-triggers op de basistabel geactiveerd na elke insertactie op de basistabel. Zie DML-triggersvoor meer informatie.
Als een ALTER TRIGGER instructie een eerste of laatste trigger wijzigt, wordt het kenmerk Eerste of Laatste verwijderd en wordt de orderwaarde ingesteld op Geen. De volgorde moet opnieuw worden ingesteld met behulp van sp_settriggerorder.
De functie OBJECTPROPERTY rapporteert of een trigger een eerste of laatste trigger is met behulp van de volgende eigenschappen: ExecIsFirstInsertTrigger, ExecIsFirstUpdateTrigger, ExecIsFirstDeleteTrigger, ExecIsLastInsertTrigger, ExecIsLastUpdateTriggeren ExecIsLastDeleteTrigger.
Replicatie genereert automatisch een eerste trigger voor elke tabel die is opgenomen in een onmiddellijk bijwerken- of wachtrij-abonnement. Voor replicatie is het vereist dat de trigger de eerste is. Replicatie veroorzaakt een fout wanneer u een tabel met een eerste trigger probeert op te nemen in een direct bijwerken of in de wachtrij geplaatst abonnement. Als u een trigger als eerste probeert in te stellen nadat een tabel is opgenomen in een abonnement, retourneert sp_settriggerorder een fout. Als u ALTER op de replicatietrigger gebruikt of sp_settriggerorder gebruikt om de replicatietrigger te wijzigen naar een laatste of zonder trigger, zal het abonnement niet correct functioneren.