Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Применимо к:SQL Server
База данных
SQL AzureУправляемый экземпляр
SQL AzureБаза данных SQL в Microsoft Fabric
Удаляет один или более триггеров 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
Аргументы
ЕСЛИ СУЩЕСТВУЕТ
Область применения: 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 должно быть указано, был ли он также указан при создании или модификации триггера.
ВСЕ СЕРВЕРЫ
Применимо: SQL Server 2008 (10.0.x) и более поздних версий.
Обозначает область действия триггера DDL на текущем сервере. Если при создании или изменении триггера был указан аргумент ALL SERVER, то он должен указываться и далее. Параметр ALL SERVER также применяется к триггерам входа.
Примечание.
Этот параметр недоступен в автономной базе данных.
Замечания
Триггер DML может быть удален напрямую или в результате удаления таблицы триггера. При удалении таблицы удаляются все связанные с ней триггеры.
При удалении триггера соответствующие данные в представлениях каталогов sys.objects, sys.triggers и sys.sql_modules также удаляются.
Несколько триггеров DDL можно выбросить на один DROP TRIGGER оператор только если все триггеры созданы с использованием одинаковых клауз 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 DATABASETRIGGER DDL разрешения в текущей базе данных.
Примеры
А. Удаление триггера DML
Следующий пример убирает employee_insupd триггер в базе данных AdventureWorks2025. (Начиная с 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_модули (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)