所以我想请问到底触发器是不是只能对触发的那个表(input/outpuy)操作,所以在input表里触发时不能修改store表?????可以对别的表进行修改的!
程序上面可能有问题!

解决方案 »

  1.   

    对于delete 所有:new都会失效.只能用于insert,update.
    create or replace trigger trigger_store_input
        after insert or update or delete on input 
       for each row
        begin 
          DBMS_OUTPUT.PUT_LINE('trigger is on!');
          update store set s_quantity=s_quantity+:new.i_quantity
          where store.g_id=:new.g_id;
      end;
    /create or replace trigger trigger_store_output 
      after insert or update or delete on output 
      for each row
       begin
        update store set s_quantity=s_quantity-:new.t_o_quantity+:new.t_r_quantity 
        where store.g_id=:new.t_g_id;
    end;
      

  2.   

    我试了这段程序是正确的:
     create or replace trigger trigger_store_input
       after insert or update or delete on input 
       for each row
       begin 
          DBMS_OUTPUT.PUT_LINE('trigger is on!');
          update store set s_quantity=s_quantity+:new.i_quantity
          where store.g_id=:new.g_id;
      end;
    可以触发进货表(input) 但是,对于出货表(output),用以下程序:
      create or replace trigger trigger_store_output 
      after insert or update or delete on output 
      for each row
       begin
        update store set s_quantity=s_quantity-:new.t_o_quantity+:new.t_r_quantity 
        where store.g_id=:new.t_g_id;
    end;
      就会出现错误“警告: 创建的触发器带有编译错误”,然后不能触发  只要我插入input表新数据后,库存表(store)里面的库存量(s_quantity)都能更新,但为什么当我建立output表触发器的时候却不行??难道建立trigger_store_output触发器需要和trigger_store_input触发器相联系?就是需要级联触发??
      谢谢了!