oracle 行触发器与语句触发器的区别
来源:互联网 发布:如何获得软件源代码 编辑:程序博客网 时间:2024/04/29 11:54
oracle 行触发与语句触发的区别: 1、行触发器有 for each row子句。语句触发器没有for each row 子句。 2、行触发器,可以有 when 作为触发限制,可以使用new/old。语句触发器不能有when 作为触发限制。 3、行触发器:对应DML语句所影响到的表中的每一行,触发器都要执行一遍。 4、语句触发:对应DML语句所影响到的表中的所有行,触发器只执行一遍。 例子: --测试表 create table wdt_test(test number(20)); --日志表 create table wdt_log(log_no number(20), log_date date); --触发器 create or replace trigger buf_wdt_test before update on wdt_test --for each row declare ln_log_no wdt_log.log_no%type default 0; begin select nvl(max(log_no), 0) + 1 into ln_log_no from wdt_log; insert into wdt_log (log_no, log_date) values (ln_log_no, sysdate); end; --测试 SQL> insert into wdt_tset (test) values(11); SQL> insert into wdt_tset (test) values(22); SQL> insert into wdt_tset (test) values(33); SQL> update wdt_test set test = 88; SQL> select * from wdt_log order by log_no; --结果只有1条记录、证明触发器只工作了一次 将触发器代码中的 for each row 解开注释,变成行触发,再继续测试。 SQL> update wdt_test set test = 99; SQL> select * from wdt_log order by log_no; --结果有3条记录、证明触发器按行工作了3次 注释1:NVL方法 从两个表达式返回一个非 null 值。 语法 NVL(eExpression1, eExpression2) 参数 eExpression1, eExpression2 如果 eExpression1 的计算结果为 null 值,则 NVL( ) 返回 eExpression2。如果 eExpression1 的计算结果不是 null 值,则返回 eExpression1。eExpression1 和 eExpression2 可以是任意一种数据类型。如果 eExpression1 与 eExpression2 的结果皆为 null 值,则 NVL( ) 返回 .NULL.。 返回值类型 字符型、日期型、日期时间型、数值型、货币型、逻辑型或 null 值 说明 在不支持 null 值或 null 值无关紧要的情况下,可以使用 NVL( ) 来移去计算或操作中的 null 值。
from:http://blog.sina.com.cn/s/blog_5da3d5c50100ba7v.html
- oracle 行触发器与语句触发器的区别
- oracle 行触发器与语句触发器的区别
- 行级触发器与语句级触发器的区别
- orcal 语句触发器和行触发器的区别
- SQL触发器与SQLite触发器的区别
- Oracle 语句级触发器
- oracle数据库语句级触发器和行级触发器的使用
- mysql的触发器和oracle触发器的区别
- Oracle触发器和MySQL触发器之间的区别
- Oracle中循环语句的触发器
- Oracle触发器介绍 语句级触发器
- ORACLE触发器 行级触发器
- AFTER触发器与INSTEAD OF触发器的区别
- AFTER触发器与INSTEAD OF触发器的区别
- AFTER触发器与INSTEAD OF触发器的区别
- oracle 触发器与事务
- Oracle函数与触发器
- oracle函数与触发器
- android线程、UI、AsyncTask
- Code Smell
- oracle中触发器中的after和before
- Smells To Refactorings
- uva143 - Orchard Trees
- oracle 行触发器与语句触发器的区别
- 22个Web在线编辑器
- oracle 临时表 解决 "表 *** 发生了变化,触发器/函数不能读"的问题
- oracle多表创建的视图insert
- Asynchronous Completion Token
- 进入数据库与身份转换
- MacBook 以及 XCode 使用小结
- Linux 技巧: 用 cron 和 at 调度作业
- ActionForward总结