社区
疑难问题
帖子详情
对一个表的一个事件(如insert)可以建多个触发器吗?
careless
2003-01-29 02:22:13
如果可以,先执行哪个呢?
...全文
1188
2
打赏
收藏
对一个表的一个事件(如insert)可以建多个触发器吗?
如果可以,先执行哪个呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
昵称被占用了
2003-01-29
打赏
举报
回复
sp_settriggerorder
指定第一个或最后一个激发的、与表关联的 AFTER 触发器。在第一个和最后一个触发器之间激发的 AFTER 触发器将按未定义的顺序执行。
语法
sp_settriggerorder[@triggername = ] 'triggername'
, [@order = ] 'value'
, [@stmttype = ] 'statement_type'
参数
[@triggername =] 'triggername'
是将要设置或更改顺序的触发器的名称。triggername 的数据类型为 sysname。如果此名称与触发器不对应或此名称对应于 INSTEAD OF 触发器,该过程将返回错误。
[@order =] 'value'
是新触发器顺序的设置。value 的数据类型为 varchar(10),可以是下列值中的任何一个。
重要 First 和 Last 触发器必须是两个不同的触发器。
值 描述
First 最先激发的触发器。
Last 最后激发的触发器。
None 以未定义的顺序激发的触发器。
[@stmttype = ] 'statement_type'
指定哪条 SQL 语句激发触发器。statement_type 的数据类型为 varchar(10),可以是 INSERT、UPDATE 或 DELETE。只有在触发器已经定义为某种语句类型的触发器后,才能将其指派为该语句类型的 First 或 Last 触发器。例如,如果 TR1 定义为 INSERT 触发器,则可以将表 T1 上的 INSERT 触发器 TR1 指派为 First 触发器。如果将只定义为 INSERT 触发器的 TR1 设置为 UPDATE 语句的 First(或 Last)触发器,则 SQL Server 将返回错误信息。有关更多信息,请参见注释部分。
返回代码值
0(成功)或 1(失败)
注释
单个表上的每个 INSERT、UPDATE 或 DELETE 语句只能有一个 First 和一个 Last 触发器。
如果在表上已定义了 First 触发器,则不能指派新触发器作为同一操作(INSERT、UPDATE 或 DELETE)的同一表的 First 触发器。此限制也适用于 Last 触发器。
作为 SQL Server 复制的一部分,可在已发布表上指派 First 触发器;然而,如果与用户定义的触发器存在冲突,则必须在表发布之前将用户定义触发器的指派更改为 None。
如果 ALTER TRIGGER 语句更改第一个或最后一个触发器,则除去最初在触发器上设置的 First 或 Last 特性,并且替换为 None。顺序值必须用 sp_settriggerorder 重新设置。
如果必须将同一触发器指派为多个语句类型的第一个或最后一个顺序,则必须为每个语句类型执行 sp_settriggerorder。而且,在可以将触发器指派为某个语句类型激发的 First 或 Last 触发器之前,必须先将其定义为该语句类型。
权限
触发器所有者以及在其上定义触发器的表所有者拥有 sp_settriggerorder 的执行许可权限。当前数据库中的 db_owner 和 db_ddladmin 角色成员以及 sysadmin 服务器角色成员可以执行该存储过程。
示例
sp_settriggerorder @triggername= 'MyTrigger', @order='first', @stmttype = 'UPDATE'
CAB0
2003-01-29
打赏
举报
回复
没玩过
可能可以
试一下不久可以了
MySQL入门进阶及面试题分析
本阶段mysql学习从0基础开始的课程。 你可以掌握以下知识点: mysql安装,mysqlshell命令,mysql关系型... mysql唯一约束非空约束主键约束,mysql外键约束和默认约束,mysql
表
关系(多对多,一对一,一对多)
oracle
一个
表
多
触发器
,oracle中同一张
表
多个
触发器
的执行顺序
今天偶然看到
一个
面试题,同一张
表
下如果有
多个
触发器
,那么这些
触发器
的执行顺序是什么?一张
表
多个
触发器
的现象可能也是存在的,关系型数据库也没有禁用这种方式,但是还是
建
议不用或者少用
触发器
,更加不要出现一张
表
多个
触发器
的情况。下面主要对dml
触发器
进行测试验证,实验环境:oracle 11.2.0.4基础准备CREATE TABLE tr_log(tr_id INT,tr_name VARCHAR2(...
一个
表
上的
多个
触发器
执行顺序问题
一、
触发器
基础 1、
触发器
使用 可以定义
一个
无论何时用
insert
语句向
表
中插入数据时都会执行的
触发器
。 当触发
insert
触发器
时,新的数据行就会被插入到
触发器
表
和
insert
ed
表
中。
insert
ed
表
是
一个
逻辑
表
,它包含了已经插入的数据行的
一个
副本。
insert
ed
表
包含了
insert
语句中已记录的插入动作。
insert
ed
表
还允许引用由初始化
insert
创
建
INSERT
、DELETE、UPDATE
触发器
示例
触发器
是基于
一个
表
创
建
的,但是可以针对
多个
表
进行操作。所以
触发器
可以用来对
表
实施复杂的完整性的约束,当
触发器
所保存的数据发生改变时,
触发器
所保存的数据发生改变时,
触发器
被自动激活,从而防止对数据的不正确修改。 下面对每个
INSERT
、DELETE、UPDATE
触发器
举
一个
小例子来加深理解:
INSERT
触发器
:
INSERT
触发器
就是当对定义
触发器
的
表
执行IN
什么是
触发器
?MySQL
触发器
概念及其应用解析
什么是
触发器
?
触发器
是一种与
表
操作(
INSERT
、UPDATE、DELETE)有关的数据库对象。
触发器
定义了一系列操作,这一系列操作称为触发程序。当
触发器
所在
表
上出现
INSERT
、UPDATE以及DETETE操作时,将激活
触发器
,即
表
的操作
事件
触发
表
上的触发程序的执行。
触发器
基于
一个
表
创
建
,但是可以针对
多个
表
进行操作,所以
触发器
可以用来对
表
实施复杂的完整性约束。
触发器
的优点
触发器
自动执行。当对
表
进行
INSERT
、 UPDATE以及DELETE操作,试图修改
表
中的数据时,相应操作的
触发器
立即
疑难问题
22,209
社区成员
121,730
社区内容
发帖
与我相关
我的任务
疑难问题
MS-SQL Server 疑难问题
复制链接
扫一扫
分享
社区描述
MS-SQL Server 疑难问题
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章