Oracle触发器表更改了触发器不能读取的解决方案(必须查看)

Oracle触发器表更改了触发器不能读取的解决方案(必须查看)
原因是表与更新表和读取表相同。
创建触发器t_userupdatet在t_user引用旧更新之前
声明u_xtfidemp1 varchar(36);
u_xtempcode1 varchar(20);
u_xtempcodecount int:= 0;
u_xtfidempcount int:= 0;
u_id1 int:= 0;
开始
u_xtfidemp1:=:n_row.u_xtfidemp;
u_xtempcode1:=:n_row.u_xtempcode;
u_id1:=:n_row.u_id;
select count(u_xtempcode)从eas.t_user哪里u_xtempcode不空为u_xtempcodecount。
select count(u_xtfidemp)从eas.t_user哪里u_xtfidemp不空为u_xtfidempcount。
如果u_xtempcodecount > 0或u_xtfidempcount > 0
raise_application_error(20001,eas.t_user u_xtempcode,u_xtfidemp,u_gzcode更新数据时出现错误,重复);
最后如果;
结束;
当错误发生时,它是因为触发是对t_user的t_userupdatet,内部具有触发t_user阅读,所以是错误的。

修改以下
创建触发器t_userupdatet在t_user引用旧更新之前
声明u_xtfidemp1 varchar(36);
u_xtempcode1 varchar(20);
u_xtempcodecount int:= 0;
u_xtfidempcount int:= 0;
u_id1 int:= 0;
语用autonomous_transaction;
开始
u_xtfidemp1:=:n_row.u_xtfidemp;
u_xtempcode1:=:n_row.u_xtempcode;
u_id1:=:n_row.u_id;
select count(u_xtempcode)从eas.t_user哪里u_xtempcode不空为u_xtempcodecount。
select count(u_xtfidemp)从eas.t_user哪里u_xtfidemp不空为u_xtfidempcount。
如果u_xtempcodecount > 0或u_xtfidempcount > 0
raise_application_error(20001,eas.t_user u_xtempcode,u_xtfidemp,u_gzcode更新数据时出现错误,重复);
如果结束;
承诺;
结束;
更多的语用autonomous_transaction;承诺;两个句子

上面的Oracle触发器列表已经更改。触发器不能读取它的解决方案。(认为)是所有萧边分享你的内容。我希望能给你一个参考,希望你能支持它。

tag:触发器读取解决方案改了电脑软件

相关内容