本主题介绍如何使用 SQL Server Management Studio 或 Transact-SQL 在 SQL Server 2014 中删除或禁用 DML 触发器。
本主题内容
准备工作:
若要删除或禁用 DML 触发器,请使用:
在您开始之前
建议
删除触发器后,将从当前数据库中删除该触发器。 表及其所基于的数据不会受到影响。 删除一个表会自动删除该表上的所有触发器。
默认情况下,创建触发器时会自动启用。
禁用触发器不会删除它。 触发器仍作为当前数据库中的对象存在。 但是,在执行其编程的任何 INSERT、UPDATE 或 DELETE 语句时,触发器不会触发。 可以重新启用禁用的触发器。 启用触发器不会重新创建它。 触发器以与最初创建触发器时相同的方式触发。
安全
权限
若要删除 DML 触发器,需要对定义触发器的表或视图具有 ALTER 权限。
若要禁用或启用 DML 触发器,用户必须至少对创建触发器的表或视图具有 ALTER 权限。
使用 SQL Server Management Studio
删除 DML 触发器
在 “对象资源管理器” 中,连接到 数据库引擎 的实例,然后展开该实例。
展开指定的数据库,展开 表,然后展开包含要删除的触发器的表。
展开 触发器,右键单击要删除的触发器,然后单击“ 删除”。
在“ 删除对象 ”对话框中,验证要删除的触发器,然后单击“ 确定”。
禁用 DML 触发器,然后启用它
在 “对象资源管理器” 中,连接到 数据库引擎 的实例,然后展开该实例。
展开所需的数据库,展开 表,然后展开包含您想要禁用触发器的表。
展开 触发器,右键单击要禁用的触发器,然后单击“ 禁用”。
若要启用触发器,请单击“ 启用”。
使用 Transact-SQL
删除 DML 触发器
连接到数据库引擎。
在标准栏中,单击“新建查询”。
将以下示例复制并粘贴到查询窗口中。 执行 CREATE TRIGGER 语句以创建
Sales.bonus_reminder触发器。 若要删除触发器,请执行 DROP TRIGGER 语句。
--Create the trigger.
USE AdventureWorks2012;
GO
IF OBJECT_ID(N'Sales.bonus_reminder', N'TR') IS NOT NULL
DROP TRIGGER Sales.bonus_reminder;
GO
CREATE TRIGGER Sales.bonus_reminder
ON Sales.SalesPersonQuotaHistory
WITH ENCRYPTION
AFTER INSERT, UPDATE
AS RAISERROR ('Notify Compensation', 16, 10);
GO
--Delete the trigger.
USE AdventureWorks2012;
GO
IF OBJECT_ID ('Sales.bonus_reminder', 'TR') IS NOT NULL
DROP TRIGGER Sales.bonus_reminder;
GO
禁用和启用 DML 触发器
连接到数据库引擎。
在标准栏中,单击“新建查询”。
将以下示例复制并粘贴到查询窗口中。 执行 CREATE TRIGGER 语句以创建
Sales.bonus_reminder触发器。 若要禁用和启用触发器,请分别执行 DISABLE TRIGGER 和 ENABLE TRIGGER 语句。
--Create the trigger.
USE AdventureWorks2012;
GO
IF OBJECT_ID(N'Sales.bonus_reminder', N'TR') IS NOT NULL
DROP TRIGGER Sales.bonus_reminder;
GO
CREATE TRIGGER Sales.bonus_reminder
ON Sales.SalesPersonQuotaHistory
WITH ENCRYPTION
AFTER INSERT, UPDATE
AS RAISERROR ('Notify Compensation', 16, 10);
GO
--Disable the trigger.
USE AdventureWorks2012;
GO
DISABLE TRIGGER Sales.bonus_reminder ON Sales.SalesPersonQuotaHistory;
GO
--Enable the trigger.
USE AdventureWorks2012;
GO
ENABLE TRIGGER Sales.bonus_reminder ON Sales.SalesPersonQuotaHistory;
GO
另请参阅
ALTER TRIGGER (Transact-SQL)
CREATE TRIGGER (Transact-SQL)
DROP 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)