行级触发器和语句触发器

commonnx 2010-12-30 12:10:36
看到到处都是这样的解释:
行级触发器对DML语句影响的每个行执行一次.
语句级触发器对每个DML语句执行一次, (如果一条insert语句在一个表中插入500行, 那么这个表的语句级触发器只执行一次, 而行级触发器要执行500次)
可以按字面意思理解: 行级触发器针对行, 语句级触发器针对语句(一个语句可以包含多行).

如何用一条insert语句在一个表中插入500行?
比如我执行一条delete语句(delete from userinfo where email='xx@126.com'),对于行级触发器,然后会对这条语句影响的每一行都触发一次触发器?对于语句级触发器只执行一次?
如果行级触发器和语句级触发器执行效果一样?,那两者的实质区别是什么?
...全文
957 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
kingkingzhu 2010-12-30
  • 打赏
  • 举报
回复
楼主已经理解了啊
但应该看到2者有各自的适用场合
andyguan01_2 2010-12-30
  • 打赏
  • 举报
回复
执行一条delete语句(delete from userinfo where email='xx@126.com'),假设会删除500行记录,那么对行级触发器来讲,触发器会针对每行记录执行一次触发,也就是共500次触发;而对语句级触发器来讲,触发器只针对这一个语句执行一次触发,所有500行记录只执行一次触发。
yuhongpingimu 2010-12-30
  • 打赏
  • 举报
回复
[Quote=引用楼主 commonnx 的回复:]
如果行级触发器和语句级触发器执行效果一样?,那两者的实质区别是什么?
[/Quote]
区别你上面已经说过了。
行级和语句级触发器应用的场合不一样。
当触发器所执行的操作不依赖于单独记录中的数据时,就应该使用语句触发器。比如,如果希望限制只能在上班时间访问某表,使用语句级触发器就可以了。
心中的彩虹 2010-12-30
  • 打赏
  • 举报
回复
[Quote=引用楼主 commonnx 的回复:]
看到到处都是这样的解释:
行级触发器对DML语句影响的每个行执行一次.
语句级触发器对每个DML语句执行一次, (如果一条insert语句在一个表中插入500行, 那么这个表的语句级触发器只执行一次, 而行级触发器要执行500次)
可以按字面意思理解: 行级触发器针对行, 语句级触发器针对语句(一个语句可以包含多行).

如何用一条insert语句在一个表中插入500行?
比如我执行一……
[/Quote]

实质区别你已经说了

行级触发器 是针对每条影响的记录 影响多少行就执行触发多少次

语句级 就是针对一条语句来的
Oraclefans_ 2010-12-30
  • 打赏
  • 举报
回复
FOR EACH ROW

Specify FOR EACH ROW to designate the trigger as a row trigger. Oracle Database fires a row trigger once for each row that is affected by the triggering statement and meets the optional trigger constraint defined in the WHEN condition.

Except for INSTEAD OF triggers, if you omit this clause, then the trigger is a statement trigger. Oracle Database fires a statement trigger only once when the triggering statement is issued if the optional trigger constraint is met.

INSTEAD OF trigger statements are implicitly activated for each row.

Restriction on Row Triggers This clause is valid only for DML event triggers, not for DDL or database event triggers.
minitoy 2010-12-30
  • 打赏
  • 举报
回复
insert
select
在select子查询里的数据可以是多条,不像values只能insert一条数据.
行级触发器的区别就是你开头说的

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧