修改或重命名 DML 触发器

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

本主题内容

  • 开始之前:

    限制和局限

    建议

    安全性

  • 若要修改或重命名 DML 触发器,请使用:

    SQL Server Management Studio

    Transact-SQL

开始之前

限制和局限

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

建议

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

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

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

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

安全性

权限

若要更改 DML 触发器,需要对于定义该触发器所在的表或视图拥有 ALTER 权限。

用于“返回首页”链接的箭头图标[Top]

使用 SQL Server Management Studio

修改 DML 触发器

  1. 在**“对象资源管理器”**中,连接到某个数据库引擎实例,再展开该实例。

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

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

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

重命名 DML 触发器

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

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

用于“返回首页”链接的箭头图标[Top]

使用 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

用于“返回首页”链接的箭头图标[Top]

请参阅

参考

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)

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)

概念

获取有关 DML 触发器的信息