大家注意,是ORACLE的问题!!!!一下语句ORACLE怎么写
现在有一个表
A(id,col1,col2)
表B (id,col3)
函数 fun(参数id)
创建一个insert 一个update触发器如果发生以上操作,执行语句 : insert into 表B(id,col3) values(id,fun(参数id) )

解决方案 »

  1.   

    我在oracle里面发表的相同的帖子,所以显示没结贴,,,有答案马上结贴
      

  2.   

    create or replace trigger trig_a after insert or update on A for each rowbegin
    insert into B(id,col3) values(:new.id,fun(:new.id));end;这样?
      

  3.   


    --你在触发器中用函数去获取更新列的值是做不到的,因你获取时,当前的记录已经改变了
    --例:
    create table A(
    id int,
    col1 varchar2(20),
    col2 varchar2(20)
    );
    create table B(
    id int,
    col3 varchar2(20));create or replace function fun(p_id int)
    return varchar2
    as
    retval varchar2(1000);
    begin
    select nvl(col1,'')||nvl(col2,'') into retval from A where id=p_id;
    return retval;
    end;
    /create or replace trigger A_ins_upd
    after insert or update
    on A
    for each row
    begin
    --insert into B values(:new.id,fun(:new.id));
    insert into B values(:new.id,nvl(:new.col1,'')||nvl(:new.col2,''));
    end;
    /insert into A values(1,'2','3');select * from B;update A set col1='4',col2='5' where id=1;select * from B;
      

  4.   


    create or replace trigger A_ins_upd
    after insert or update
    on A
    for each row
    begin
        insert into B values(:new.id,fun(:new.id));end;