- 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)