1

我需要有关在我的触发器上创建table1将特定列插入table2from 的帮助table1。我怎样才能做到这一点?我正在使用 Oracle 11G XE。

这是我的代码:

create or replace trigger AllowanceTrigger
after insert on ex_bulacan
for each row
begin
    insert into allowance (PLANT_ORIGIN,SO_NO, SO_STATUS,SO_REMARKS,DRIVER_NAME)
    values (:new.plant_origin, :new.sales_order_no, :new.status,:new.remarks, :new.driver_name);
end; ​

如果他们更新数据ex_bulacan怎么办?会自动改变我的allowance桌子吗?

4

3 回答 3

3

否。如果您希望触发器在 有更新时ex_bulacan触发,则需要同时定义触发器after insertafter update。如果要更新allowance表格,则需要类似

create or replace trigger AllowanceTrigger
after insert or update on ex_bulacan
for each row
begin
  if( inserting )
  then
    insert into allowance (PLANT_ORIGIN,
                           SO_NO, 
                           SO_STATUS,
                           SO_REMARKS,
                           DRIVER_NAME)
    values (:new.plant_origin, 
            :new.sales_order_no, 
            :new.status,
            :new.remarks, 
            :new.driver_name);
  end if;

  if( updating )
  then
    update allowance
       set plant_origin = :new.plant_origin,
           so_status = :new.status,
           so_remarks = :new.remarks,
           driver_name = :new.driver_name
     where so_no = :new.sales_order_no;
  end if;
end; ​

也就是说,拥有两个具有相同数据集的表强烈意味着您遇到了不正确的规范化问题。修复数据模型通常比尝试通过触发器使两个表中的数据保持同步要好得多。

于 2012-03-30T03:29:50.557 回答
0

正如@e-bacho 2.0 的评论所述,更新期间不会发生任何事情。您还必须为事件指定触发器after update。或实施您的实际触发器来处理更新

于 2012-03-30T02:49:36.917 回答
0

不,您需要这样定义的触发器:

在插入或更新后创建或替换触发器 AllowanceTrigger .....

或者您可以创建两个触发器 - 一个用于插入,一个用于更新

于 2012-03-30T02:46:16.730 回答