删除或禁用 DML 触发器

适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例

本主题介绍如何使用 SQL Server Management Studio 或 Transact-SQL 在 SQL Server 中删除或禁用 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 AdventureWorks2022;  
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 AdventureWorks2022;  
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 TRIGGER 语句和 ENABLE TRIGGER 语句。

--Create the trigger.  
USE AdventureWorks2022;  
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 AdventureWorks2022;  
GO  
DISABLE TRIGGER Sales.bonus_reminder ON Sales.SalesPersonQuotaHistory;  
GO  
  
--Enable the trigger.  
USE AdventureWorks2022;  
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)