关于trigger的muting table异常
来源:互联网 发布:九品芝麻官 知乎 编辑:程序博客网 时间:2024/09/21 09:05
研究方法:为测试表建立 insert,delete,update 对应的after,before触发器,在触发器中访问当前表,然后执行测试的 insert,delete,update 语句触发这个触发器, 查看是否有异常:
ORA-04091: table YC.TR1 is mutating, trigger/function may not see it
1. 建表,并插入测试数据
create table tr1
(id number,name varchar2(10));
insert into tr1 values(1,'a');
2.建立触发器并执行测试
create or replace trigger tr1_bu
before update on tr1 for each row
declare
a number;
begin
select id into a from tr1 where id = 1;
end;
-- 执行
update tr1 set name='b' -- 报错
drop trigger tr1_bu;
create or replace trigger tr1_au
after update on tr1 for each row
declare
se number;
begin
select id into se from tr1 where id =1;
end;
--执行
update tr1 set name = 'b' where id = 1 --报错
create or replace trigger tr1_ai
after insert on tr1 for each row
declare
a number;
begin
select id into a from tr1 where id = 1;
end;
--执行
insert into tr1 values(2,'b'); --报错
create or replace trigger tr1_bi
before insert on tr1 for each row
declare
a number;
begin
select id into a from tr1 where id = 1;
end;
--执行
insert into tr1 values(2,'b'); --成功
insert into tr1
select 1,'a' from dual -- 报错
create or replace trigger tr1_ad
after delete on tr1 for each row
declare
a number;
begin
select id into a from tr1 where id = 1;
end;
--执行
delete from tr1 where id = 2 --报错
drop trigger tr1_ad;
create or replace trigger tr1_bd
before delete on tr1 for each row
declare
a number;
begin
select id into a from tr1 where id =1;
end;
--执行
delete from tr1 where id = 2 --报错
总结: 只有在before insert触发器中才能编写访问当前表数据的sql语句,但是前提是用普通insert语句触发这个触发器,否则如果用insert select 来触发这个触发器,就会出错
- 关于trigger的muting table异常
- 關於觸發器(Trigger)對於變異表(Mutating table)的操作
- trigger抛出异常ORA-04091:table ...... is mutating, trigger/function may not see it
- create trigger--table/view trigger
- 关于错误:"ORA-04091: table is mutating, trigger/function may not see it"的分析(触发器操作自身表)
- 关于错误:"ORA-04091: table is mutating, trigger/function may not see it"的分析(触发器操作自身表)
- 关于"Neighbour table overflow“的异常分析及解决方案
- 关于oracle触发器trigger的调试
- 关于Trigger的使用 - 转自AskTom
- ORA-04082: 及 ORA-06512 异常,table trigger 影响自身修改示例
- PLSQL Trigger Update Another Table
- 关于错误:"table is mutating, trigger/function may not see it
- 关于Table的误解
- 关于procedure+trigger+package+package body的综合应用
- [Salesforce] 关于Trigger 的使用(防止死循环)
- 关于direct insert 里的reference key及trigger
- 关于jQuery中的trigger和triggerHandler方法的使用
- 错误"ORA-04091: table is mutating, trigger/function may not see it"的原因以及解决办法
- c# 或 操作符 |
- 今天可以给我的程序换皮肤颜色了,牛,高兴。
- SQL SERVER 2005开启xp_cmdshell的方法
- 看看偶像剧,挺好的放松心情,减轻压力
- 新西游记
- 关于trigger的muting table异常
- substring和substr的区别
- 嵌入式系统学习资源,及时总结持续提高。
- 用URL类读取网络页面源文件保存到本地
- C++数据类型(32位程序)
- start
- 整理,压缩代码的在线工具
- 今天犯了一个时间查询上的错误
- 包含JSF控件的JSP和Facelet是互斥的