我自己写了2种 但是好像都不对 NO.1 create or replace trigger AupdateB after update on a for each row declare ps_phone varchar2(512); ps_content varchar2(512); ps_fsry varchar2(512); ps_ret varchar2(512); begin if updating then ps_phone := :old.dx_phone; ps_content := :new.dx_hfnr; ps_fsry := :new.dx_hfr; ps_ret := :new.dx_zxjg; p_push@dblink_b(ps_phone, ps_content,ps_fsry,ps_ret); end if; end; NO.2 create or replace trigger AupdateB after update on a for each row declare ps_phone varchar2(512); ps_content varchar2(512); ps_fsry varchar2(512); ps_ret varchar2(512); begin if updating then select :old.dx_phone, :new.dx_hfnr, :new.dx_hfr, :new.dx_zxjg into ps_phone, ps_content, ps_fsry, ps_ret from a where dx_id = :old.dx_id; p_push@dblink_b(ps_phone, ps_content,ps_fsry,ps_ret); end if; end; 第一个执行程序没报错 但是好像没成功 第二个触发器 执行程序的时候 还要报错 java.sql.SQLException: ORA-04091: 表a发生了变化,触发器/函数不能读 ORA-06512: 在"AupdateB", line 10 ORA-04088: 触发器 'AupdateB执行过程中出错 求解! 谢谢
:= . ( @ % ;
符号 ":=" 被替换为 "p_push" 后继续。
行:21这个是什么错啊???
after update on a
for each row declare ps_phone varchar2(512);
ps_content varchar2(512);
ps_fsry varchar2(512);
ps_ret varchar2(512); begin
if updating then
ps_phone := :old.dx_phone;
ps_content := :new.dx_hfnr;
ps_fsry := :new.dx_hfr;
ps_ret := :new.dx_zxjg;
p_push@dblink_b(ps_phone, ps_content,ps_fsry,ps_ret);
end if;
end;
NO.2 create or replace trigger AupdateB
after update on a
for each row declare ps_phone varchar2(512);
ps_content varchar2(512);
ps_fsry varchar2(512);
ps_ret varchar2(512); begin
if updating then
select :old.dx_phone, :new.dx_hfnr, :new.dx_hfr, :new.dx_zxjg
into ps_phone, ps_content, ps_fsry, ps_ret
from a
where dx_id = :old.dx_id;
p_push@dblink_b(ps_phone, ps_content,ps_fsry,ps_ret);
end if;
end; 第一个执行程序没报错 但是好像没成功
第二个触发器 执行程序的时候 还要报错
java.sql.SQLException: ORA-04091: 表a发生了变化,触发器/函数不能读
ORA-06512: 在"AupdateB", line 10
ORA-04088: 触发器 'AupdateB执行过程中出错
求解! 谢谢