请问我现在有两个表a表userid username
b表bid buserid busername我想在b表里插入一条数据,b表里的userid 要从a表里来,如果a表没有就用busername在a表里插入一条然后得到a表的userid,再在b表里插数据,如果a表有就得到a 表里的userid再在b表里插数据这用触发器怎么实现

解决方案 »

  1.   

    定义一个USER_SEQ的sequence来维护a的idCREATE OR REPLACE TRIGGER complexInsert_test
    before INSERT ON b
    DECLARE
    v_userid number;
    BEGIN
    select userid into v_userid from a where username = :new.busername;if(v_count is not null) then
    :new.buserid := v_userid;
    else
    v_userid := USER_SEQ.nextval();
    insert into a values(v_userid, :new. busername);
    :new.buserid := v_userid;
    end if;END;
    /
      

  2.   

    在b表里添加一个before insert触发器先去a表找数据,没有的化就用new赋值,然后出入a表,然后在insert入b表
      

  3.   


    对本表的insert不需要你显式的做,只要trigger执行成功,本表的记录也就成功插入了。