删除或禁用 DML 触发器

本主题介绍如何使用 SQL Server Management Studio 或 Transact-SQL 在 SQL Server 2014 中删除或禁用 DML 触发器。

本主题内容

在您开始之前

建议

  • 删除触发器后,将从当前数据库中删除该触发器。 表及其所基于的数据不会受到影响。 删除一个表会自动删除该表上的所有触发器。

  • 默认情况下,创建触发器时会自动启用。

  • 禁用触发器不会删除它。 触发器仍作为当前数据库中的对象存在。 但是,在执行其编程的任何 INSERT、UPDATE 或 DELETE 语句时,触发器不会触发。 可以重新启用禁用的触发器。 启用触发器不会重新创建它。 触发器以与最初创建触发器时相同的方式触发。

安全

权限

若要删除 DML 触发器,需要对定义触发器的表或视图具有 ALTER 权限。

若要禁用或启用 DML 触发器,用户必须至少对创建触发器的表或视图具有 ALTER 权限。

使用 SQL Server Management Studio

删除 DML 触发器

  1. “对象资源管理器” 中,连接到 数据库引擎 的实例,然后展开该实例。

  2. 展开指定的数据库,展开 ,然后展开包含要删除的触发器的表。

  3. 展开 触发器,右键单击要删除的触发器,然后单击“ 删除”。

  4. 在“ 删除对象 ”对话框中,验证要删除的触发器,然后单击“ 确定”。

禁用 DML 触发器,然后启用它

  1. “对象资源管理器” 中,连接到 数据库引擎 的实例,然后展开该实例。

  2. 展开所需的数据库,展开 ,然后展开包含您想要禁用触发器的表。

  3. 展开 触发器,右键单击要禁用的触发器,然后单击“ 禁用”。

  4. 若要启用触发器,请单击“ 启用”。

使用 Transact-SQL

删除 DML 触发器

  1. 连接到数据库引擎。

  2. 在标准栏中,单击“新建查询”

  3. 将以下示例复制并粘贴到查询窗口中。 执行 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 触发器

  1. 连接到数据库引擎。

  2. 在标准栏中,单击“新建查询”

  3. 将以下示例复制并粘贴到查询窗口中。 执行 CREATE TRIGGER 语句以创建 Sales.bonus_reminder 触发器。 若要禁用和启用触发器,请分别执行 DISABLE TRIGGERENABLE 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)