修改或重命名 DML 触发器
适用于: SQL Server Azure 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 触发器
在 “对象资源管理器” 中,连接到 数据库引擎 的实例,然后展开该实例。
展开你所需的数据库,再展开 “表”,然后展开包含要修改的触发器的表。
展开“触发器”,右键单击要修改的触发器,然后单击“修改”。
修改触发器,然后选择“执行”。
重命名 DML 触发器
- 删除或禁用要重命名的 DML 触发器。
- 创建新的 DML 触发器,并指定新名称。
使用 Transact-SQL
使用 ALTER TRIGGER 修改触发器
连接到 数据库引擎。
在标准栏上,选择“新建查询”。
复制并将以下示例粘贴到查询中。 执行第一个示例以创建 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 重命名触发器
连接到 数据库引擎。
在标准栏上,选择“新建查询”。
将以下示例复制并粘贴到查询窗口中,然后选择“执行”。 此示例使用 DROP TRIGGER 和 CREATE 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)