create or replace trigger TEST1_INSERT  after Insert on TEST1  for each Row
Declare 
PRAGMA AUTONOMOUS_TRANSACTION;
Begin
  Update TEST1 Set YEARVALUE=SUBSTR(DATEVALUE,1,4),MONTHVALUE=SUBSTR(DATEVALUE,6,2)
  Where DATEVALUE=:new.datevalue;
  Commit;
end TEST1;插入一行数据,且更新此行数据列(从datevalue中取,年,月) yearvalue ,monthvalue 请教???万分火急!!!

解决方案 »

  1.   

    -- 还有:datevalue字段是什么数据类型?
      

  2.   

    create or replace trigger TEST1_INSERT before Insert on TEST1 for each Row
    Declare  
    Begin
      :new.YEARVALUE:=SUBSTR(:new.DATEVALUE,1,4);
      :new.MONTHVALUE:=SUBSTR(:new.DATEVALUE,6,2)
    end TEST1;
      

  3.   

    create or replace trigger TEST1_INSERT before Insert on TEST1 for each Row
    Declare  
    Begin
      :new.YEARVALUE:=SUBSTR(:new.DATEVALUE,1,4);
      :new.MONTHVALUE:=SUBSTR(:new.DATEVALUE,6,2)
    end TEST1;
      

  4.   

    --就这样可以了,虽然你的申明了自治事务,但是很危险的,容易出问题
    create or replace trigger TEST1_INSERT after Insert on TEST1 for each Row
    Begin
      :new.YEARVALUE=SUBSTR(:new.DATEVALUE,1,4);
      :new.MONTHVALUE=SUBSTR(:new.DATEVALUE,6,2)
    end TEST1;