oracle触发器的问题,插入的时候报错
下面是我写的一个简单的触发器,如果插入app_login_log表后只有一条记录,就更新fam_tea_temp表的相同的family_id的type为1,但是现在插入会报错,如下:
ORA-04091: 表 APP_LOGIN_LOG 发生了变化, 触发器/函数不能读它
ORA-06512: 在 "APP_LOGIN_LOG_UP_TEA_JLCENT", line 4
ORA-04088: 触发器 APP_LOGIN_LOG_UP_TEA_JLCENT' 执行过程中出错
CREATE OR REPLACE TRIGGER APP_LOGIN_LOG_up_tea_jlcent
after insert on APP_LOGIN_LOG
for each row
declare
v_num number;
begin
select COUNT(1) into v_num from APP_LOGIN_LOG where user_id=:new.user_id ;
if v_num=1 then
UPDATE fam_tea_temp set type=1 WHERE FAMILY_ID=:new.user_id;
end if;
end;
/
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
先说技术上的解决不报错的方法
1、在DECLARE区域增加:
2、update语句后面,增加commit语句
然后是逻辑上的问题:
使用AUTONOMOUS_TRANSACTION,select语句读取不到当前表插入新的数据,因此判断条件需要修改为: