适用于:
SQL Server
Azure SQL 数据库
Azure SQL 托管实例
本主题介绍如何使用 SQL Server Management Studio 或 Transact-SQL 在 SQL Server 中修改或重命名 DML 触发器。
本主题内容
开始之前:
限制和局限
若要修改或重命名 DML 触发器,请使用:
SQL Server Management Studio
Transact-SQL
限制和局限
重命名触发器时,该触发器必须位于当前数据库中,并且新名称必须遵守
标识符
规则。
我们建议你不要使用
sp_rename
存储过程重命名触发器。 更改对象名的任一部分都可能破坏脚本和存储过程。 重命名触发器将不会更改
sys.sql_modules
目录视图的定义列中相应对象名的名称。 我们建议删除并重新创建触发器。
如果更改了 DML 触发器引用的对象名,则必须修改触发器以使其文本反映新的名称。 因此,在重命名对象之前,需要先显示该对象的依赖关系,以确定所建议的更改是否会影响任何触发器。
也可以修改 DML 触发器以加密其定义。
若要查看触发器的依赖项,您可以使用 SQL Server Management Studio 或以下函数和目录视图:
sys.sql_expression_dependencies (Transact-SQL)
sys.dm_sql_referenced_entities (Transact-SQL)
sys.dm_sql_referencing_entities (Transact-SQL)
在标准菜单栏上,单击
“新建查询”
。
复制并将以下示例粘贴到查询中。 执行第一个示例以创建 DML 触发器,在用户尝试添加或更改
SalesPersonQuotaHistory
表中的数据时,该触发器将用户定义的信息打印到客户端。 执行
ALTER TRIGGER
语句修改该触发器以便仅对
INSERT
活动激发。 此触发器十分有用,因为它可提醒向此表中插入行或更新行的用户也要通知
Compensation
部门。
USE AdventureWorks2012;
IF OBJECT_ID(N'Sales.bonus_reminder', N'TR') IS NOT NULL
DROP TRIGGER Sales.bonus_reminder;
CREATE TRIGGER Sales.bonus_reminder
ON Sales.SalesPersonQuotaHistory
WITH ENCRYPTION
AFTER INSERT, UPDATE
AS RAISERROR ('Notify Compensation', 16, 10);
USE AdventureWorks2012;
ALTER TRIGGER Sales.bonus_reminder
ON Sales.SalesPersonQuotaHistory
AFTER INSERT
AS RAISERROR ('Notify Compensation', 16, 10);
若要重命名触发器,请使用 DROP TRIGGER 和 ALTER TRIGGER
连接到 数据库引擎。
在标准菜单栏上,单击 “新建查询” 。
将以下示例复制并粘贴到查询窗口中,然后单击“执行” 。 该示例使用 DROP TRIGGER 和 ALTER TRIGGER 语句将 Sales.bonus_reminder
触发器重命名为 Sales.bonus_reminder_2
。
USE AdventureWorks2012;
IF OBJECT_ID(N'Sales.bonus_reminder', N'TR') IS NOT NULL
DROP TRIGGER Sales.bonus_reminder;
CREATE TRIGGER Sales.bonus_reminder_2
ON Sales.SalesPersonQuotaHistory
WITH ENCRYPTION
AFTER INSERT, UPDATE
AS RAISERROR ('Notify Compensation', 16, 10);
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)