在线等,急求解!我有两张表,A表 和 B表,A表和B表都有一个parentid字段,表示父级ID,现在我写一个触发器(建在A表上)当对A表做增,删,改时分别对相应的数据在B表做同步触发,A表和B表只有NAME字段是一样的,当我向A表插入数据时,肯定要根据A表的parentid来找到A表parentid.name,然后才能找到B表对应的name,进而找到B表对应的id,这样往B表插入数据的时候,才可以有B表的parentid,现在是我访问A表后就会报ORA-04091: 表 HNTELANT.XB_UIMCARD 发生了变化, 触发器/函数不能读它错误,各位有什么好招,急求解,重赏!!
解决方案 »
- 有关报表数据显示序号问题
- 如何提高此sql執行效率
- 满足两条件,两条记录,查询相同的id
- 帮忙看一下,这个SQL怎么实现!。。 谢谢~~
- 急急,数据库导库字符集问题?????
- 为何ORACLE 占CPU达 100%
- ###### 突然升星了,嘿嘿 先散200分再说,快进来接分吧 ######
- 请教:Delphi7.0,Oracle10, ADO连接,问题如下:主从表关系,当删除主表记录时,对应的从表记录没有删除,是什么原因?记得以前MSSQL时没
- 我现在要把数据库从一台服务器完整地移到另一台服务器,怎么做?急急急!在线等!
- 如何修改表中字段类型而不影响注释?
- 菜鸟问下, 这个oracle的分页存储过程 SQLTools 怎样执行下
- 增加操作系统密码后 oracle连接失败
建触发器 on A:
select name into v_name from A where ID IN (
SELECT parentid from a where id = :new.id);--找到A表父级name,--这一句异常,对自身触发表操作了select id into v_id from B where name = v_name;通过A表父级name,找到B表父级idinsert into b(id,name,parentid) values(s_b.nextval,:new.name,v_id );--如果做插入,同步数据到B表.
建触发器 on A:
select name into v_name from A where ID IN (
SELECT parentid from a where id = :new.id);--找到A表父级name,--这一句异常,对自身触发表操作了select id into v_id from B where name = v_name;通过A表父级name,找到B表父级idinsert into b(id,name,parentid) values(s_b.nextval,:new.name,v_id );--如果做插入,同步数据到B表.
建触发器 on A:
select name into v_name from A where ID IN (
SELECT parentid from a where id = :new.id);--找到A表父级name,--这一句异常,对自身触发表操作了select id into v_id from B where name = v_name;通过A表父级name,找到B表父级idinsert into b(id,name,parentid) values(s_b.nextval,:new.name,v_id );--如果做插入,同步数据到B表.
不能对触发表进行dml语句 除非自治事务 可以引用:new 或者old 或者修改select name into v_name from A where ID IN (
SELECT parentid from a where id = :new.id);--改成
v_name:=:new.name
在触发器声明部分
加
pragma autonomous_transaction;
....commit;