修改或重命名 DML 触发器

本主题介绍如何使用 SQL Server Management Studio 或 Transact-SQL 在 SQL Server 2014 中修改或重命名 DML 触发器。

本主题内容

在您开始之前

局限性与限制

  • 重命名触发器时,触发器必须位于当前数据库中,并且新名称必须遵循 标识符规则。

建议

安全

权限

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

使用 SQL Server Management Studio

修改 DML 触发器

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

  2. 展开所需的数据库,展开 “表”,然后展开包含要修改的触发器的表。

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

  4. 修改触发器,然后单击“ 执行”。

重命名 DML 触发器

  1. 删除要重命名的触发器

  2. 重新创建触发器,并指定新名称。

使用 Transact-SQL

使用 ALTER TRIGGER 修改触发器

  1. 连接到数据库引擎。

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

  3. 将以下示例复制并粘贴到查询中。 执行第一个示例来创建 DML 触发器,当用户尝试在表中添加或更改数据 SalesPersonQuotaHistory 时,该触发器将用户定义的消息打印到客户端。 执行 ALTER TRIGGER 语句,将触发器修改为仅在 INSERT 活动时触发。 此触发器很有用,因为它提醒用户在更新或插入此表中的行时,还要通知Compensation部门。

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  
  
USE AdventureWorks2012;  
GO  
ALTER TRIGGER Sales.bonus_reminder  
ON Sales.SalesPersonQuotaHistory  
AFTER INSERT  
AS RAISERROR ('Notify Compensation', 16, 10);  
GO  
  

使用 DROP TRIGGER 和 ALTER TRIGGER 重命名触发器

  1. 连接到数据库引擎。

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

  3. 将以下示例复制并粘贴到查询窗口中,然后单击 执行。 此示例使用 DROP TRIGGERALTER TRIGGER 语句将 Sales.bonus_reminder 触发器重命名为 Sales.bonus_reminder_2

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_2  
ON Sales.SalesPersonQuotaHistory  
WITH ENCRYPTION  
AFTER INSERT, UPDATE   
AS RAISERROR ('Notify Compensation', 16, 10);  
GO  
  

另请参阅

CREATE TRIGGER (Transact-SQL)
DROP TRIGGER (Transact-SQL)
ENABLE TRIGGER (Transact-SQL)
DISABLE TRIGGER (Transact-SQL)
EVENTDATA (Transact-SQL)
sp_rename(Transact-SQL)
ALTER TRIGGER (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)