修改或重命名 DML 触发器

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

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

本主题内容

开始之前

限制和局限

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

建议

  • 我们建议你不要使用 sp_rename 存储过程重命名触发器。 更改对象名的任一部分都可能破坏脚本和存储过程。 重命名触发器将不会更改 sys.sql_modules 目录视图的定义列中相应对象名的名称。 我们建议删除并重新创建触发器。

  • 如果更改了 DML 触发器引用的对象名,则必须修改触发器以使其文本反映新的名称。 因此,在重命名对象之前,需要先显示该对象的依赖关系,以确定所建议的更改是否会影响任何触发器。

  • 也可以修改 DML 触发器以加密其定义。

  • 要查看触发器的依赖项,你可以使用 SQL Server Management Studio 或以下函数和目录视图:

安全性

权限

若要更改 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 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  
  
USE AdventureWorks2022;  
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 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_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)