DROP TRIGGER (Transact-SQL)
Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure
Удаляет один или более триггеров DML или DDL из текущей базы данных.
Соглашения о синтаксисе Transact-SQL
Синтаксис
-- 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
Аргументы
IF EXISTS
Область применения: SQL Server (SQL Server 2016 (13.x) до текущей версии, База данных SQL).
Условное удаление триггера только в том случае, если он уже существует.
schema_name
Имя схемы, которой принадлежит триггер DML. Действие триггеров DML ограничивается областью схемы таблицы или представления, для которых они созданы. Аргумент schema_name не может указываться для триггеров DDL или триггеров входа.
trigger_name
Имя удаляемого триггера. Чтобы просмотреть список только что созданных триггеров, см. sys.server_assembly_modules или sys.server_triggers.
DATABASE
Обозначает область действия триггера DDL в текущей базе данных. Если при создании или изменении триггера был указан аргумент DATABASE, то он должен указываться и далее.
ALL SERVER
Применимо: SQL Server 2008 (10.0.x) и более поздних версий.
Обозначает область действия триггера DDL на текущем сервере. Если при создании или изменении триггера был указан аргумент ALL SERVER, то он должен указываться и далее. Параметр ALL SERVER также применяется к триггерам входа.
Примечание.
Этот параметр недоступен в автономной базе данных.
Замечания
Триггер DML может быть удален напрямую или в результате удаления таблицы триггера. При удалении таблицы удаляются все связанные с ней триггеры.
При удалении триггера соответствующие данные в представлениях каталогов sys.objects, sys.triggers и sys.sql_modules также удаляются.
С помощью инструкции DROP TRIGGER сразу несколько триггеров DDL можно удалить только в том случае, если при их создании были использованы одинаковые предложения ON.
Чтобы переименовать триггер, используйте инструкции DROP TRIGGER и CREATE TRIGGER. Чтобы изменить определение триггера, используйте инструкцию ALTER TRIGGER.
Дополнительные сведения об определении зависимостей для конкретных триггеров см. в разделах sys.sql_expression_dependencies, sys.dm_sql_referenced_entities (Transact-SQL) и sys.dm_sql_referencing_entities (Transact-SQL).
Дополнительные сведения о просмотре текста триггеров см. в статьях sp_helptext (Transact-SQL) и sys.sql_modules (Transact-SQL).
Дополнительные сведения о просмотре списка существующих триггеров см. в статьях sys.triggers (Transact-SQL) и sys.server_triggers (Transact-SQL).
Разрешения
Чтобы удалить триггер DML, необходимо разрешение ALTER для таблицы или представления, в которых определен данный триггер.
Чтобы удалить триггер входа или триггер DDL, определенный в области сервера (ON ALL SERVER), для этого сервера требуется разрешение CONTROL SERVER. Чтобы удалить триггер DDL, определенный в области базы данных (ON DATABASE), необходимо разрешение ALTER ANY DATABASE DDL TRIGGER для текущей базы данных.
Примеры
А. Удаление триггера DML
В следующем примере триггер удаляется employee_insupd
в базе данных AdventureWorks2022. (Начиная с версии SQL Server 2016 (13.x) можно использовать синтаксис DROP TRIGGER IF EXISTS.)
IF OBJECT_ID ('employee_insupd', 'TR') IS NOT NULL
DROP TRIGGER employee_insupd;
B. Удаление триггера DDL
В ходе выполнения следующего примера происходит удаление триггера DDL safety
.
Внимание
Функция OBJECT_ID не может быть использована для выяснения факта существования в базе данных триггеров DDL, так как они не относятся к области схемы и данные о них не заносятся в каталог sys.objects. Запросы на объекты, не относящиеся к области схемы, должны выполняться при помощи соответствующих представлений каталогов. Для триггеров DDL используйте sys.triggers.
DROP TRIGGER safety
ON DATABASE;
См. также
ALTER TRIGGER (Transact-SQL)
CREATE TRIGGER (Transact-SQL)
ENABLE TRIGGER (Transact-SQL)
DISABLE TRIGGER (Transact-SQL)
EVENTDATA (Transact-SQL)
Получение сведений о триггерах DML
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)