Udostępnij za pośrednictwem


UPUŚĆ WYZWALACZA (Transact-SQL)

Usuwa jeden lub więcej wyzwalaczy DML lub DDL z bieżącej bazy danych.

Ikona łącza do tematuJęzyka Transact-SQL składni konwencje

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.

Ważna informacjaWażne:

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