UPUŚĆ WYZWALACZA (Transact-SQL)
Usuwa jeden lub więcej wyzwalaczy DML lub DDL z bieżącej bazy danych.
Składnia
Trigger on an INSERT, UPDATE, or DELETE statement to a table or view (DML Trigger)
DROP TRIGGER [schema_name.]trigger_name [ ,...n ] [ ; ]
Trigger on a CREATE, ALTER, DROP, GRANT, DENY, REVOKE or UPDATE statement (DDL Trigger)
DROP TRIGGER trigger_name [ ,...n ]
ON { DATABASE | ALL SERVER }
[ ; ]
Trigger on a LOGON event (Logon Trigger)
DROP TRIGGER trigger_name [ ,...n ]
ON ALL SERVER
Argumenty
schema_name
Jest to nazwa schematu, do której należy dany wyzwalacz DML .WyzwalaczeDML są obejmuje zasięgiem schematu tabela lub widoku, na którym są tworzone.schema_namenie można określić dla Wyzwalacze DDL lub logowania.trigger_name
Jest to nazwa wyzwalacza do usunięcia.Aby wyświetlić listę aktualnie utworzone wyzwalaczy, użyj sys.server_assembly_modules lub sys.server_triggers.BAZY DANYCH
Wskazuje, że zakres DDL wyzwalacz ma zastosowanie do bieżącej bazy danych.Baza danych musi być określony, jeśli zostały one również określone kiedy wyzwalacz utworzenia lub modyfikacji.WSZYSTKIE SERWERA
Wskazuje, że zakres wyzwalacza DDL stosuje się do bieżącego serwera.WSZYSTKIE serwer musi być określony, jeśli zostały one również określone kiedy wyzwalacz utworzenia lub modyfikacji.WSZYSTKIE serwera stosuje się również do logowania usługi wyzwalaczy.
Uwagi
Można usunąć wyzwalacz DML , upuszczając go lub przez upuszczenie wyzwalacza tabela.Po upuszczeniu tabela wszystkie skojarzone wyzwalacze są również usuwane.
Po upuszczeniu wyzwalacz informacji na temat wyzwalacz jest usuwany z sys.objects, sys.triggers i sys.sql_modules widoki wykazu.
Wiele wyzwalaczy DDL można upuszczać na UPUŚĆ WYZWALACZ instrukcja tylko wtedy, gdy wszystkie wyzwalacze utworzone przy użyciu identyczne na klauzul.
Zmiana nazwy wyzwalacza, umożliwia tworzenie WYZWALACZY i WYZWALACZY UPUSZCZANIA.Aby zmienić definicję wyzwalacz, użyj zmienić WYZWALACZ.
Aby uzyskać więcej informacji na temat określania zależności dla określonego wyzwalacza, zobacz sys.sql_expression_dependencies, sys.dm_sql_referenced_entities (języka Transact-SQL), i sys.dm_sql_referencing_entities (języka Transact-SQL).
Aby uzyskać więcej informacji dotyczących wyświetlania tekstu wyzwalacza, zobacz sp_helptext (języka Transact-SQL) i sys.sql_modules (języka Transact-SQL).
Aby uzyskać więcej informacji dotyczących wyświetlania listy istniejących wyzwalaczy, zobacz sys.Triggers (Transact-SQL) i sys.server_triggers (języka Transact-SQL).
Uprawnienia
Aby upuścić DML wyzwalacza wymaga uprawnień ALTER na tabela lub widoku zdefiniowano wyzwalacza.
Aby upuścić DDL wyzwalacza zdefiniowane przy użyciu serwera zakres (na wszystkich SERVER) lub wyzwalacza logowania wymaga uprawnień sterowania serwera na serwerze.Aby upuścić DDL wyzwalacza zdefiniowane przy użyciu bazy danych zakres (na bazie danych) wymaga uprawnienia ALTER DATABASE dowolnego DDL WYZWALACZA w bieżącej bazie danych.
Przykłady
A.Usunięcie wyzwalacza DML
Poniższy przykład spadnie employee_insupd wyzwalacza.
USE AdventureWorks2008R2;
GO
IF OBJECT_ID ('employee_insupd', 'TR') IS NOT NULL
DROP TRIGGER employee_insupd;
GO
B.Usunięcie wyzwalacza DDL
Poniższy przykład spadnie wyzwalacza DDL safety.
![]() |
---|
Ponieważ Wyzwalacze DDL nie jest objęty zakresem schematu i dlatego nie są wyświetlane w sys.objects katalogu widoku OBJECT_ID funkcja nie można zbadać, czy istnieją one w bazie danych.Obiekty, które nie są zakresu do schematu musi zbadać przy użyciu widoku odpowiedniego wykazu.Wyzwalacze DDL za pomocą sys.triggers. |
USE AdventureWorks2008R2;
GO
IF EXISTS (SELECT * FROM sys.triggers
WHERE parent_class = 0 AND name = 'safety')
DROP TRIGGER safety
ON DATABASE;
GO
Zobacz także