Delen via


DROP TRIGGER (Transact-SQL)

van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL-database in Microsoft Fabric

Verwijdert één of meer DML- of DDL-triggers uit de huidige database.

Transact-SQL syntaxis-conventies

Syntaxis

-- Trigger on an INSERT, UPDATE, or DELETE statement to a table or view (DML Trigger)  
  
DROP TRIGGER [ IF EXISTS ] [schema_name.]trigger_name [ ,...n ] [ ; ]  
  
-- Trigger on a CREATE, ALTER, DROP, GRANT, DENY, REVOKE or UPDATE statement (DDL Trigger)  
  
DROP TRIGGER [ IF EXISTS ] trigger_name [ ,...n ]   
ON { DATABASE | ALL SERVER }   
[ ; ]  
  
-- Trigger on a LOGON event (Logon Trigger)  
  
DROP TRIGGER [ IF EXISTS ] trigger_name [ ,...n ]   
ON ALL SERVER  

Arguments

ALS BESTAAT
Van toepassing op: SQL Server (SQL Server 2016 (13.x) tot en met de huidige versie, SQL Database).

Voorwaardelijk laat de trigger vallen alleen als die al bestaat.

schema_name
Is de naam van het schema waartoe een DML-trigger behoort. DML-triggers zijn beperkt tot het schema van de tabel of weergave waarop ze zijn gemaakt. schema_name kan niet worden gespecificeerd voor DDL- of logontriggers.

trigger_name
Is de naam van de trigger die verwijderd moet worden. Om een lijst van momenteel aangemaakte triggers te zien, gebruik sys.server_assembly_modules of sys.server_triggers.

DATABASE
Geeft aan dat de reikwijdte van de DDL-trigger geldt voor de huidige database. DATABASE moet worden gespecificeerd als deze ook werd gespecificeerd toen de trigger werd aangemaakt of gewijzigd.

ALLE SERVER
van toepassing op: SQL Server 2008 (10.0.x) en hoger.

Geeft aan dat de reikwijdte van de DDL-trigger geldt voor de huidige server. ALL SERVER moet worden gespecificeerd als deze ook werd gespecificeerd toen de trigger werd aangemaakt of gewijzigd. ALL SERVER geldt ook voor logon-triggers.

Opmerking

Deze optie is niet beschikbaar in een besloten database.

Opmerkingen

Je kunt een DML-trigger verwijderen door hem te laten vallen of door de triggertabel te verwijderen. Wanneer een tabel wordt verwijderd, worden ook alle bijbehorende triggers weggelaten.

Wanneer een trigger wordt verwijderd, wordt informatie over de trigger verwijderd uit de sys.objects, sys.triggers en sys.sql_modules catalogusweergaven.

Meerdere DDL-triggers kunnen per DROP TRIGGER-instructie worden verwijderd, alleen als alle triggers zijn gemaakt met identieke ON-clausules.

Om een trigger te hernoemen, gebruik je DROP TRIGGER en CREATE TRIGGER. Om de definitie van een trigger te veranderen, gebruik je ALTER TRIGGER.

Voor meer informatie over het bepalen van afhankelijkheden voor een specifieke trigger, zie sys.sql_expression_dependencies, sys.dm_sql_referenced_entities (Transact-SQL) en sys.dm_sql_referencing_entities (Transact-SQL).

Voor meer informatie over het bekijken van de tekst van de trigger, zie sp_helptext (Transact-SQL) en sys.sql_modules (Transact-SQL).

Voor meer informatie over het bekijken van een lijst van bestaande triggers, zie sys.triggers (Transact-SQL) en sys.server_triggers (Transact-SQL).

Permissions

Om een DML-trigger te plaatsen is ALTER-toestemming nodig op de tabel of weergave waarop de trigger is gedefinieerd.

Om een DDL-trigger te plaatsen die gedefinieerd is met serverscope (OP ALLE SERVEREN) of een logon-trigger vereist CONTROL SERVER-toestemming in de server. Om een DDL-trigger te verwijderen die is gedefinieerd met databasescope (ON DATABASE), is ALTER ANY DATABASE DDL TRIGGER toestemming nodig in de huidige database.

Voorbeelden

Eén. Een DML-trigger laten vallen

Het volgende voorbeeld laat de employee_insupd trigger vallen in de AdventureWorks2025-database. (Vanaf SQL Server 2016 (13.x) kun je de syntaxis DROP TRIGGER IF EXISTS gebruiken.)

IF OBJECT_ID ('employee_insupd', 'TR') IS NOT NULL  
   DROP TRIGGER employee_insupd;  

B. Een DDL-trigger laten vallen

Het volgende voorbeeld laat DDL-trigger safetyvallen.

Belangrijk

Omdat DDL-triggers niet schema-scoped zijn en daarom niet in de sys.objects-catalogus verschijnen, kan de OBJECT_ID-functie niet worden gebruikt om te onderzoeken of ze in de database bestaan. Objecten die niet schema-scoped zijn, moeten worden bevraagd met de juiste catalogusweergave. Voor DDL-triggers gebruik sys.triggers.

DROP TRIGGER safety  
ON DATABASE;  

Zie ook

ALTER TRIGGER (Transact-SQL)
MAAK TRIGGER (Transact-SQL)
TRIGGER INSCHAKELEN (Transact-SQL)
TRIGGER UITSCHAKELEN (Transact-SQL)
EVENTDATA (Transact-SQL)
Informatie over DML-triggers ophalen
sp_help (Transact-SQL)
sp_helptrigger (Transact-SQL)
sys.triggers (Transact-SQL)
sys.trigger_events (Transact-SQL)
sys.sql_modules (Transact-SQL)
sys.assembly_modules (Transact-SQL)
sys.server_triggers (Transact-SQL)
sys.server_trigger_events (Transact-SQL)
sys.server_sql_modules (Transact-SQL)
sys.server_assembly_modules (Transact-SQL)