触发器错误!!ORA-04091:表..发生了变化,触发器/函数不能读,---在线等待!!
aa表为表头
bb表为名细,
bb上建有触发器,删除记录时需要读取表头的信息,并据此做相应的处理;
aa上用触发器实现aa-->bb的级连删除
脚本如下:
直接删除bb表记录没有问题,但试图删除aa表记录时出错;
可能是执行操作的顺序有问题,即级连删除时不能访问表头(以被修改)
但要想实现上面的功能应该怎么修改呢?
=================================================================
create table aa(
no varchar2(5),
flag varchar2(1)
);
create table bb(
no varchar2(5),
dd varchar2(10));
create or replace trigger ord_aa_tr before delete on aa for each row
begin
delete from bb where no=:old.no;
end ord_aa_tr;
/
create or replace trigger ord_bb_tr before delete on bb for each row
declare
q varchar2(10);
begin
select flag into q from aa where no=:OLD.no;
--......其它处理
end ord_aa_tr;
/
insert into aa values('001','1');
insert into bb values('001','abc');
delete from aa;
ERROR 位于第 1 行:
ORA-04091: 表 CCDUSER.AA 发生了变化,触发器/函数不能读
ORA-06512: 在"CCDUSER.ORD_BB_TR", line 4
ORA-04088: 触发器 'CCDUSER.ORD_BB_TR' 执行过程中出错
ORA-06512: 在"CCDUSER.ORD_AA_TR", line 2
ORA-04088: 触发器 'CCDUSER.ORD_AA_TR' 执行过程中出错
================================================================