分享
 
 
 

ALTERTRIGGER

王朝other·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

更改原来由 CREATE TRIGGER 语句创建的触发器定义。有关 ALTER TRIGGER 语句所用参数的更多信息,请参见 CREATE TRIGGER。

语法

ALTER TRIGGER trigger_name

ON ( table | view )

[ WITH ENCRYPTION ]

{

{ ( FOR | AFTER | INSTEAD OF ) { [ DELETE ] [ , ] [ INSERT ] [ , ] [ UPDATE ] }

[ NOT FOR REPLICATION ]

AS

sql_statement [ ...n ]

}

|

{ ( FOR | AFTER | INSTEAD OF ) { [ INSERT ] [ , ] [ UPDATE ] }

[ NOT FOR REPLICATION ]

AS

{ IF UPDATE ( column )

[ { AND | OR } UPDATE ( column ) ]

[ ...n ]

| IF ( COLUMNS_UPDATED ( ) { bitwise_operator } updated_bitmask )

{ comparison_operator } column_bitmask [ ...n ]

}

sql_statement [ ...n ]

}

}

参数

trigger_name

是要更改的现有触发器。

table | view

是触发器在其上执行的表或视图。

WITH ENCRYPTION

加密 syscomments 表中包含 ALTER TRIGGER 语句文本的条目。使用 WITH ENCRYPTION 可防止将触发器作为 SQL Server 复制的一部分发布。

说明 如果原来的触发器定义是用 WITH ENCRYPTION 或 RECOMPILE 创建的,那么只有在 ALTER TRIGGER 中也包含这些选项时,这些选项才有效。

AFTER

指定触发器只有在触发它的 SQL 语句执行成功后才触发。所有的引用级联操作和约束检查也必须成功完成后,才能执行此触发器。

如果仅指定了 FOR 关键字,那么 AFTER 是默认设置。

AFTER 触发器只能定义在表上。

INSTEAD OF

指定执行触发器而不是触发 SQL 语句,从而替代触发语句的操作。

在表或视图上,每个 INSERT、UPDATE 或 DELETE 语句最多可以定义一个 INSTEAD OF 触发器。然而,可以在每个具有 INSTEAD OF 触发器的视图上定义视图。

INSTEAD OF 触发器不允许定义在用 WITH CHECK OPTION 创建的视图上。如果向指定了 WITH CHECK OPTION 选项的视图添加 INSTEAD OF 触发器,SQL Server 将引发一个错误。用户必须用 ALTER VIEW 删除该选项后才能定义 INSTEAD OF 触发器。

{ [DELETE] [,] [INSERT] [,] [UPDATE] } | { [INSERT] [,] [UPDATE]}

是指定在表或视图上执行哪些数据修改语句时将激活触发器的关键字。必须至少指定一个选项。在触发器定义中允许使用以任意顺序组合的这些关键字。如果指定的选项多于一个,需用逗号分隔这些选项。

对于 INSTEAD OF 触发器,不允许在具有 ON DELETE 级联操作引用关系的表上使用 DELETE 选项。同样,也不允许在具有 ON UPDATE 级联操作引用关系的表上使用 UPDATE 选项。有关更多信息,请参见 ALTER TABLE。

NOT FOR REPLICATION

表示当复制登录(如 sqlrepl)更改触发器所涉及的表时,不应执行该触发器。

AS

是触发器要执行的操作。

sql_statement

是触发器的条件和操作。

n

是表示触发器中可以包含多条 Transact-SQL 语句的占位符。

IF UPDATE (column)

测试在指定的列上进行的 INSERT 或 UPDATE 操作,不能用于 DELETE 操作。

可以在触发器主体中的任意位置使用 UPDATE(column)。

{AND | OR}

指定要测试 INSERT 或 UPDATE 操作的另一个列。

column

是要测试 INSERT 或 UPDATE 操作的列名。

IF (COLUMNS_UPDATED())

判断提及的一列或多列是插入还是更新,仅用于 INTSERT 或 UPDATE 触发器中。COLUMNS_UPDATED 返回 varbinary 位模式,该位模式表示表的哪些列进行了插入操作,哪些列进行了更新操作。

可以在触发器主体中的任意位置使用 COLUMNS_UPDATED。

bitwise_operator

是用于比较运算的位运算符。

updated_bitmask

是整型位掩码,表示实际更新或插入的列。例如,表 t1 包含列 C1、C2、C3、C4 和 C5。假定表 t1 上有 UPDATE 触发器,若要检查列 C2、C3 和 C4 是否都有更新,指定值 14;若要检查是否只有列 C2 有更新,指定值 2。

comparison_operator

是比较运算符。使用等号 (=) 检查 updated_bitmask 中指定的所有列是否都实际进行了更新。使用大于号 () 来检查 updated_bitmask 中指定的列是否有进行过更新的,或者没有全部进行更新。

column_bitmask

是要检查的列的整型位掩码。

说明 由于 Microsoft 不支持在系统表上添加用户定义触发器,所以建议不要在系统表上创建用户定义触发器。

通过表和视图上的 INSTEAD OF 触发器,ALTER TRIGGER 支持可手工更新的视图。Microsoft® SQL Server™ 以相同的方式对所有类型的触发器(AFTER、INSTEAD-OF)应用 ALTER TRIGGER。

可用 sp_settriggerorder 指定表上第一个和最后一个执行的 AFTER 触发器。在表上只能指定一个第一个执行及一个最后一个执行的 AFTER 触发器。如果该表上还有其它 AFTER 触发器,那么这些触发器将以未定义的顺序执行。

如果 ALTER TRIGGER 语句更改了第一个或最后一个触发器,则将除去已修改触发器上设置的第一个或最后一个特性,而且必须用 sp_settriggerorder 重置排序值。

只有当激发触发器的 SQL 语句(包括所有与被更新或删除对象有关的引用级联操作和约束检查)成功执行后,AFTER 触发器才会执行。AFTER 触发器操作要检查激发触发器的语句的运行结果(也包括所有由激发语句引起的 UPDATE 和 DELETE 引用级联操作)。

如果一个子表或引用表上的 DELETE 操作是由于父表的 CASCADE DELETE 操作所引起的,并且子表上定义了 DELETE 的 INSTEAD OF 触发器,那么将忽略该触发器并执行 DELETE 操作。

权限

ALTER TRIGGER 的权限默认地授予 db_owner 和 db_ddladmin 固定数据库角色的成员,以及表所有者。这些权限是不可传递的。

示例

下例首先创建一个触发器,当用户在表 roysched 中添加或更改数据时,该触发器向客户端打印一条用户定义消息。然后,使用 ALTER TRIGGER 语句使该触发器仅对 INSERT 活动有效。该触发器有助于提醒向表中插入行或更新行的用户及时通知书的作者和出版商。

USE pubs

GO

CREATE TRIGGER royalty_reminder

ON roysched

WITH ENCRYPTION

FOR INSERT, UPDATE

AS RAISERROR (50009, 16, 10)

-- Now, alter the trigger.

USE pubs

GO

ALTER TRIGGER royalty_reminder

ON roysched

FOR INSERT

AS RAISERROR (50009, 16, 10)

消息 50009 是 sysmessages 中的用户定义消息。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有