K这个字段是多余的,没有必要建。
任何时候通过select i+j from test_tri就可以知道K。

解决方案 »

  1.   

    :new.k= :new.i + :new.j;
      

  2.   

    可以更改触发器类型的new值???
    不会吧...
      

  3.   

    create or replace trigger ttt
    before insert 
    on test_tri
    for each row
    begin
     :new.k= :new.i + :new.j;
    end;要Before时触发
      

  4.   

    哦,对,在before触发器中是可以的。
    create or replace trigger ttt
    before insert 
    on test_tri
    for each row
    begin
     :new.k:= :new.i + :new.j; --此处应该是赋值
    end;
      

  5.   

    感谢:waterfirer(水清) , myrou(myrou)  KDE(黎明) 等的帮助。
    以上只是一个例子,下面是具体的应用:
    create or replace trigger Set_Lanmu
    before insert or update
     of infotype on infolist
    referencing old as oldd
                new as neww
    for each row
     when (length(nvl(neww.resourcecolumnids,''))=0)
    declare columnID varchar2(40)
    begin
    select LanmuID  into columnID from infotype where oid=neww.infotype;
    neww.resourcecolumnids:=ColumnID;
    end;
    在编译的时候没有错误,但是在插入数据的时候,提示信息"..无效且未通过确认”,怎么回事??
      

  6.   

    你写的trigger有问题,试试这个
    create or replace trigger Set_Lanmu
    before insert or update
     of infotype on infolist
    referencing old as oldd
                new as neww
    for each row
    declare columnID varchar2(40);
    begin
    if :neww.resourcecolumnids is null then
    select LanmuID  into columnID from infotype where oid=:neww.infotype;
    :neww.resourcecolumnids:=ColumnID;
    end if;
    end;
      

  7.   

    create or replace trigger ttt
    after insert 
    on test_tri
    for each row
    begin
    :new.K = :new.i + :new.j;
    end;