DROP TRIGGER (Transact-SQL)
从当前数据库删除一个或多个 DML、DDL 或登录触发器。
语法
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
参数
- schema_name
DML 触发器所属架构的名称。DML 触发器的作用域是为其创建该触发器的表或视图的架构。对于 DDL 或登录触发器,无法指定 schema_name。
- trigger_name
要删除的触发器的名称。若要查看当前创建的触发器的列表,可使用 sys.triggers (Transact-SQL)。
- DATABASE
指示 DDL 触发器的作用域应用于当前数据库。如果在创建或修改触发器时也指定了 DATABASE,则必须指定 DATABASE。
- ALL SERVER
指示 DDL 或登录触发器的作用域应用于当前服务器。如果在创建或修改触发器时也指定了 ALL SERVER,则必须指定 ALL SERVER。
备注
可以通过删除 DML 触发器或删除触发器表来删除 DML 触发器。删除表时,将同时删除与表关联的所有触发器。
删除触发器时,将从 sys.objects、sys.triggers 和 sys.sql_modules 目录视图中删除有关该触发器的信息。
仅当所有触发器均使用相同的 ON 子句创建时,才能使用一个 DROP TRIGGER 语句删除多个 DDL 触发器。
若要重命名触发器,可使用 DROP TRIGGER 和 CREATE TRIGGER。若要更改触发器的定义,可使用 ALTER TRIGGER。
有关确定特定触发器依赖关系的详细信息,请参阅 sp_depends (Transact-SQL) 和 sys.sql_dependencies (Transact-SQL)。
有关查看触发器文本的详细信息,请参阅 sp_helptext (Transact-SQL) 和 sys.sql_modules (Transact-SQL)。
有关查看现有触发器列表的详细信息,请参阅 sys.triggers (Transact-SQL) 和 sys.server_triggers。
权限
若要删除 DML 触发器,要求对要定义触发器的表或视图具有 ALTER 权限。
若要删除定义了服务器范围 (ON ALL SERVER) 的 DDL 触发器或删除登录触发器,需要对服务器拥有 CONTROL SERVER 权限。若要删除定义了数据库范围 (ON DATABASE) 的 DDL 触发器,要求在当前数据库中具有 ALTER ANY DATABASE DDL TRIGGER 权限。
示例
A. 删除 DML 触发器
以下示例将删除 employee_insupd
触发器。
USE AdventureWorks;
GO
IF OBJECT_ID ('employee_insupd', 'TR') IS NOT NULL
DROP TRIGGER employee_insupd;
GO
B. 删除 DDL 触发器
以下示例将删除 DDL 触发器 safety
。
重要提示: |
---|
因为 DDL 触发器不在架构范围内,所以不会在 sys.objects 目录视图中出现,无法使用 OBJECT_ID 函数来查询数据库中是否存在 DDL 触发器。必须使用相应的目录视图来查询架构范围以外的对象。对于 DDL 触发器,可使用 sys.triggers。 |
USE AdventureWorks;
GO
IF EXISTS (SELECT * FROM sys.triggers
WHERE parent_class = 0 AND name = 'safety')
DROP TRIGGER safety
ON DATABASE;
GO
请参阅
参考
ALTER TRIGGER (Transact-SQL)
CREATE TRIGGER (Transact-SQL)
ENABLE TRIGGER (Transact-SQL)
DISABLE TRIGGER (Transact-SQL)
EVENTDATA (Transact-SQL)
sp_help (Transact-SQL)
sp_helptrigger (Transact-SQL)
sys.objects (Transact-SQL)
sys.triggers (Transact-SQL)
sys.trigger_events (Transact-SQL)
sys.sql_modules (Transact-SQL)
sys.assembly_modules (Transact-SQL)
sys.server_triggers
sys.server_trigger_events
sys.server_sql_modules
sys.server_assembly_modules (Transact-SQL)
其他资源
获取有关 DML 触发器的信息
获取有关 DDL 触发器的信息
帮助和信息
更改历史记录
发布日期 | 历史记录 |
---|---|
2006 年 12 月 12 日 |
|