Udostępnij za pomocą


SPUST DROP (Transact-SQL)

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceBaza danych SQL w usłudze Microsoft Fabric

Usuwa jeden lub więcej wyzwalaczy DML lub DDL z obecnej bazy danych.

Transact-SQL konwencje składni

Składnia

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

JEŚLI ISTNIEJE
Dotyczy do: SQL Server (SQL Server 2016 (13.x) do aktualnej wersji, SQL Database).

Warunkowo rezygnuje z wyzwalacza tylko wtedy, gdy już istnieje.

schema_name
To nazwa schematu, do którego należy wyzwalacz DML. Wyzwalacze DML są przypisane do schematu tabeli lub widoku, na którym są tworzone. schema_name nie można określić dla wyzwalaczy DDL ani logowania.

trigger_name
To nazwa wyzwalacza, który należy usunąć. Aby zobaczyć listę obecnie utworzonych wyzwalaczy, użyj sys.server_assembly_modules lub sys.server_triggers.

DATABASE
Wskazuje, że zakres wyzwalacza DDL odnosi się do aktualnej bazy danych. DATABASE musi być określona, jeśli została określona również podczas tworzenia lub modyfikacji wyzwalacza.

WSZYSTKIE SERWERY
Dotyczy: SQL Server 2008 (10.0.x) i nowszych.

Wskazuje, że zakres wyzwalacza DDL dotyczy aktualnego serwera. ALL SERVER musi być określony jeśli został określony także podczas tworzenia lub modyfikacji wyzwalacza. ALL SERVER dotyczy także wyzwalaczy logowania.

Uwaga / Notatka

Ta opcja nie jest dostępna w zamkniętej bazie danych.

Uwagi

Możesz usunąć wyzwalacz DML, odrzucając go lub odrzucając tabelę wyzwalaczy. Gdy tabela zostaje porzucona, wszystkie powiązane wyzwalacze również zostają usunięte.

Gdy wyzwalacz zostanie usunięty, informacje o wyzwalaczu są usuwane z widoków katalogów sys.objects, sys.triggers oraz sys.sql_modules .

Wiele wyzwalaczy DDL można usunąć w każdej instrukcji DROP TRIGGER tylko wtedy, gdy wszystkie wyzwalacze zostały utworzone za pomocą identycznych klauzul ON.

Aby zmienić nazwę wyzwalacza, użyj DROP TRIGGER i CREATE TRIGGER. Aby zmienić definicję wyzwalacza, użyj ALTER TRIGGER.

Więcej informacji o określaniu zależności dla konkretnego wyzwalacza można znaleźć w sys.sql_expression_dependencies, sys.dm_sql_referenced_entities (Transact-SQL) oraz sys.dm_sql_referencing_entities (Transact-SQL).

Aby uzyskać więcej informacji o wyświetlaniu tekstu wyzwalacza, zobacz sp_helptext (Transact-SQL) oraz sys.sql_modules (Transact-SQL).

Więcej informacji o przeglądaniu listy istniejących wyzwalaczy można znaleźć w sys.triggers (Transact-SQL) oraz sys.server_triggers (Transact-SQL).

Permissions

Aby usunąć wyzwalacz DML, potrzebne jest pozwolenie ALTER na tabelę lub widok, w którym wyzwalacz jest zdefiniowany.

Aby usunąć wyzwalacz DDL zdefiniowany z zakresem serwera (NA WSZYSTKICH SERWERACH) lub wyzwalaczem logowania, potrzebne są uprawnienia CONTROL SERVER na serwerze. Aby usunąć wyzwalacz DDL zdefiniowany z zakresem bazy danych (ON DATABASE), wymagane jest ZMIENIENIE DOWOLNYCH UPRAWNIEŃ DO WYZWALANIA DDL bazy danych w aktualnej bazie danych.

Przykłady

A. Rezygnacja z DML

Poniższy przykład wywołuje employee_insupd wyzwalacz w bazie AdventureWorks2025. (Począwszy od SQL Server 2016 (13.x), możesz używać składni DROP TRIGGER, IF EXISTS.)

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

B. Upuszczenie spustu DDL

Poniższy przykład eliminuje wyzwalacz safetyDDL.

Ważne

Ponieważ wyzwalacze DDL nie są ograniczone do schematu i dlatego nie pojawiają się w widoku katalogu sys.objects , funkcja OBJECT_ID nie może być użyta do zapytania, czy istnieją w bazie danych. Obiekty, które nie są objęte schematem, muszą być zapytane za pomocą odpowiedniego widoku katalogowego. Do wyzwalaczy DDL użyj sys.triggers.

DROP TRIGGER safety  
ON DATABASE;  

Zobacz też

ALTER TRIGGER (Transact-SQL)
UTWÓRZ TRIGGER (Transact-SQL)
WŁĄCZ WYZWALACZ (Transact-SQL)
WYŁĄCZ WYZWALACZ (Transact-SQL)
DANE ZDARZEŃ (Transact-SQL)
Uzyskaj informacje o wyzwalaczach DML
sp_help (Transact-SQL)
sp_helptrigger (Transact-SQL)
sys.triggers (Transact-SQL)
sys.trigger_events (Transact-SQL)
sys.sql_moduły (Transact-SQL)
sys.assembly_modules (Transact-SQL)
sys.server_triggers (Transact-SQL)
sys.wydarzenia_wyzwalacza_serwera (Transact-SQL)
sys.server_sql_modules (Transact-SQL)
sys.server_assembly_modules (Transact-SQL)