DISABLE TRIGGER (Transact-SQL)

  • 05/10/2017
  • 2 minuten om te lezen
    • W
    • c
    • r
    • i
    • M
    • +7

Geldt voor: SQL Server (alle ondersteunde versies) Azure SQL Database

Deactiveert een trigger.

Transact-SQL Syntax Conventions

Syntax

DISABLE TRIGGER { trigger_name | ALL } ON { object_name | DATABASE | ALL SERVER } 

Note

Om de Transact-SQL syntaxis voor SQL Server 2014 en eerder te bekijken, zie de documentatie van eerdere versies.

Arguments

schema_name
Is de naam van het schema waartoe de trigger behoort. schema_name kan niet worden opgegeven voor DDL- of aanmeldtriggers.

trigger_name
Is de naam van de trigger die moet worden uitgeschakeld.

ALL
Geeft aan dat alle triggers die zijn gedefinieerd in het bereik van de ON-clausule worden uitgeschakeld.

Caution

SQL Server maakt triggers aan in databases die zijn gepubliceerd voor samenvoegingsreplicatie. Door ALLES op te geven in gepubliceerde databases worden deze triggers uitgeschakeld, waardoor de replicatie wordt verstoord. Controleer of de huidige database niet is gepubliceerd voor merge replicatie voordat u ALL specificeert.

object_naam
Is de naam van de tabel of view waarop de DML-trigger trigger_naam is gemaakt om uit te voeren.

DATABASE
Voor een DDL-trigger, geeft aan dat trigger_naam is gemaakt of gewijzigd om uit te voeren met database scope.

ALL SERVER
Geldt voor: SQL Server 2008 en later.

Voor een DDL-trigger geeft dit aan dat trigger_name is gemaakt of gewijzigd om uit te voeren met serverbereik. ALL SERVER geldt ook voor aanmeldtriggers.

Note

Deze optie is niet beschikbaar in een ingesloten database.

Opmerkingen

Triggers worden standaard ingeschakeld wanneer ze worden gemaakt. Het uitschakelen van een trigger laat deze niet vallen. De trigger bestaat nog steeds als een object in de huidige database. De trigger wordt echter niet geactiveerd wanneer Transact-SQL-statements waarop de trigger is geprogrammeerd, worden uitgevoerd. Triggers kunnen weer worden ingeschakeld met ENABLE TRIGGER. DML-triggers die op tabellen zijn gedefinieerd, kunnen ook worden uitgeschakeld of ingeschakeld met ALTER TABLE.

Het wijzigen van de trigger met behulp van het ALTER TRIGGER statement schakelt de trigger in.

Toestemmingen

Om een DML-trigger uit te schakelen, moet een gebruiker minimaal ALTER-toestemming hebben op de tabel of view waarop de trigger is aangemaakt.

Om een DDL-trigger met serverbereik (ON ALL SERVER) of een aanmeldtrigger uit te schakelen, moet een gebruiker CONTROL SERVER-toestemming hebben op de server. Om een DDL-trigger met databasebereik (ON DATABASE) uit te schakelen, moet een gebruiker ten minste ALTER ANY DATABASE DDL TRIGGER-toestemming hebben in de huidige database.

Voorbeelden

De volgende voorbeelden worden beschreven in de AdventureWorks2012-database.

A. Een DML-trigger op een tabel uitschakelen

Het volgende voorbeeld schakelt trigger uAddress uit die is gemaakt op tabel Person.

DISABLE TRIGGER Person.uAddress ON Person.Address; GO 

B. Een DDL-trigger uitschakelen

Het volgende voorbeeld maakt een DDL-trigger safety met databasebereik, en schakelt deze vervolgens uit.

CREATE TRIGGER safety ON DATABASE FOR DROP_TABLE, ALTER_TABLE AS PRINT 'You must disable Trigger "safety" to drop or alter tables!' ROLLBACK; GO DISABLE TRIGGER safety ON DATABASE; GO 

C. Alle triggers uitschakelen die zijn gedefinieerd met dezelfde scope

Het volgende voorbeeld schakelt alle DDL-triggers uit die zijn aangemaakt met de server scope.

DISABLE Trigger ALL ON ALL SERVER; GO 

Zie ook

TRIGGER INSCHAKELEN (Transact-SQL)
ALTER TRIGGER (Transact-SQL)
CREATE TRIGGER (Transact-SQL)
DROP TRIGGER (Transact-SQL)
sys.triggers (Transact-SQL)

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.