本主题介绍如何使用 SQL Server Management Studio 或 Transact-SQL 在 SQL Server 2014 中修改或重命名 DML 触发器。
本主题内容
准备工作:
若要修改或重命名 DML 触发器,请使用:
在您开始之前
局限性与限制
- 重命名触发器时,触发器必须位于当前数据库中,并且新名称必须遵循 标识符规则。
建议
建议不要使用 sp_rename 存储过程来重命名触发器。 更改对象名的任一部分都可能破坏脚本和存储过程。 重命名触发器不会更改 sys.sql_modules 目录视图的定义列中相应对象名称的名称。 我们建议您删除并重新创建该触发器。
如果更改 DML 触发器引用的对象的名称,则必须修改触发器,使其文本反映新名称。 因此,在重命名对象之前,先显示对象的依赖项,以确定任何触发器是否受建议的更改影响。
还可以修改 DML 触发器以加密其定义。
若要查看触发器的依赖项,可以使用 SQL Server Management Studio 或以下函数和目录视图:
安全
权限
若要更改 DML 触发器,需要对定义触发器的表或视图具有 ALTER 权限。
使用 SQL Server Management Studio
修改 DML 触发器
在 “对象资源管理器” 中,连接到 数据库引擎 的实例,然后展开该实例。
展开所需的数据库,展开 “表”,然后展开包含要修改的触发器的表。
展开 触发器,右键单击要修改的触发器,然后单击“ 修改”。
修改触发器,然后单击“ 执行”。
重命名 DML 触发器
使用 Transact-SQL
使用 ALTER TRIGGER 修改触发器
连接到数据库引擎。
在标准栏中,单击“新建查询”。
将以下示例复制并粘贴到查询中。 执行第一个示例来创建 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 重命名触发器
连接到数据库引擎。
在标准栏中,单击“新建查询”。
将以下示例复制并粘贴到查询窗口中,然后单击 执行。 此示例使用 DROP TRIGGER 和 ALTER 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)