现在有一张明细表A,插入明细表A是一个是事务。然后现有一个触发器,在插入表A后,更新表A刚插入的明细的一个字段。
现有问题:
1。是事务提交后触发触发器,还是插入表A事务没提交就触发。
2。现在事务执行到插入表A时报错,是否是因为事务没提交,而不能更新新插入明细字段而产生的问题。
求高人指点

解决方案 »

  1.   

    使用 before insert for each row 触发器,在触发器中通过 :new 记录更改新插入行的字段。
      

  2.   

    3楼的,我现在就报这个错误 触发“器/函数不能读它 ORA-06512:”
      

  3.   

    如4楼,如果你是想对插入数据做更改,需要采用before类型的行触发器,使用 :new来引用需更新的列来加以处理.
      

  4.   

    感谢4楼的,用你的办法通过了,也感谢3楼的。
    代码太多,不好贴,我描述下,具体就是.net里启动一个oracle事务:
    插入账务信息表,插入购物明细表,提交事务。
    然后触发器是对应购物明细表的,一旦插入新纪录
    触发器代码:
    create or replace trigger trdpaydetails_insert_info after
    insert ON trdpaydetails for each row
    declare
        update trdpaydetails set :new.USECLASS='0' where TRADEIDNO=:new.TRADEIDNO;
    end trdpaydetails_insert_info;