变异表
来源:互联网 发布:苏州睿途网络 编辑:程序博客网 时间:2024/04/29 14:18
变异表就是当前被DML语句修改的表,对trigger来说,变异表就是trigger在其上
定义的表。需要明确的是trigger中SQL语句不能进行如下操作:
1)读或修改触发语句的任何变异表,其中包括触发表本身
2)读或修改触发表的约束表中的主关键字,唯一关键字和外部关键字列。除此之外的其他列都可以修改。
以上2条限制适合所有的行级trigger.
注意:如果insert 语句只影响一句的话,则在改行的before和after 触发器将不把触发表当作变异表对待。
这是在行级trigger可能载入或修改触发表时的唯一案例。而对于象insert into table_name select * from ...
总是把触发表当作变异表,即使子查询返回一行也是一样的。
下面以一个具体的实例来说明这一点
PHP code:
SQL> create table toms(area number(3),
2 name varchar2(32));
表已创建。
SQL> insert into toms values(10,'BJ');
已创建 1 行。
SQL> commit;
提交完成。
SQL> create or replace trigger trig_bi_toms
2 before insert on toms
3 for each row
4 begin
5 if :new.area=531 then
6 update toms set name='调整' where area=531;
7 end if;
8 end;
9 /
触发器已创建
SQL> insert into toms values(20,'TJ');
已创建 1 行。
SQL> commit;
提交完成。
SQL> insert into toms values(531,'JN');
已创建 1 行。
SQL> commit;
提交完成。
SQL> select * from toms;
10 BJ
20 TJ
531 JN
SQL> insert into toms values(531,'JN');
已创建 1 行。
SQL> commit;
提交完成。
SQL> select * from toms;
10 BJ
20 TJ
531 调整
531 JN
SQL>
SQL> insert into toms select 531,'DH' from tabs;
insert into toms select 531,'DH' from tabs
*
第 1 行出现错误:
ORA-04091: 表 STUDY.TOMS 发生了变化, 触发器/函数不能读它
ORA-06512: 在 "STUDY.TRIG_BI_TOMS", line 3
ORA-04088: 触发器 'STUDY.TRIG_BI_TOMS' 执行过程中出错
SQL> insert into toms select 531,'DH' from tabs where rownum=1;
insert into toms select 531,'DH' from tabs where rownum=1
*
第 1 行出现错误:
ORA-04091: 表 STUDY.TOMS 发生了变化, 触发器/函数不能读它
ORA-06512: 在 "STUDY.TRIG_BI_TOMS", line 3
ORA-04088: 触发器 'STUDY.TRIG_BI_TOMS' 执行过程中出错
SQL>
摘自:http://www.itpub.net/525513.html
- 变异表
- 变异表的问题
- 变异表的问题
- Oracle12--变异表(五十四)
- oracle中变异表触发器的处理。
- 在trigger中如何操作变异表
- oracle中变异表处理办法
- 行级触发器相关的变异表
- ORA-04091变异表 ora-00060
- 包含变异表(mutating table)的触发器
- Oracle中变异表(ORA-04091)处理方法两则
- 三个触发器解决变异表错误(ORA-04091)
- 多项式变异
- 变异系数
- 变异分析
- TSP问题变异算法之交换变异
- 触发器中ORA-04091 变异表错误原因和一般解决方法
- oracle变异表触发器中ORA-04091错误原因及解决方案
- DIYMAD 用手机打广告的行动行销专家
- js String replaceAll
- 关于软件测试的一些基本知识
- 我要怎么办
- EL表达式判断数组为空
- 变异表
- asp.net中的窗体身份验证(完整篇之一:创建asp.net的窗体身份验证方式)
- AT指令发送PDU短信详解(支持发送到小灵通)
- 图形化分区管理工具
- Java程序员学习Flex和BlazeDS的十三个理由
- 修正fstream在open中文名文件时出错的问题
- 源码网站
- linux自动检测网站并发送邮件提醒
- mysql error number 2003错误告诉你怎么回事