Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Baza 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)