日期:2014-05-17  浏览次数:21105 次

触发器中怎样实现插入数据后再删除这条数据
往A表里面插入数据,先判断这条数据的IS_TEST字段,如果是0就插入B表中,然后在A表中将这条数据删除。如果是1就不插入B表,也就是不做任

何操作。这是写的插入数据的触发器,怎么在里面添加语句实现删除操作。
create or replace trigger TRG_DXP_MATERIEL_APPLY_INSERT
after insert on DXP_MATERIEL_APPLY
for each row
DECLARE
BEGIN
  if :NEW.IS_TEST=0 then
  INSERT INTO ods_epbi.DXP_MATERIEL_APPLY(
  TAB_YEAR,
  TAB_MONTH,
  TAB_DAY,
  APPLY_ID,
  APPLY_TYPE,
  UNIT_CODE,
  UNIT_NAME,
  IS_TEST,
  DXP_MATERIEL_APPLY_ID,
  DEPT_CODE) VALUES(
  :NEW.TAB_YEAR,
  :NEW.TAB_MONTH,
  :NEW.TAB_DAY,
  :NEW.APPLY_ID,
  :NEW.APPLY_TYPE,
  :NEW.UNIT_CODE,
  :NEW.UNIT_NAME,
  :NEW.IS_TEST,
  :NEW.DXP_MATERIEL_APPLY_ID,
  :NEW.DEPT_CODE);
  end if;
end;

谢谢各位了!!!!!!

------解决方案--------------------
有2个办法:1。修改你的程序,在程序中直接判断IS_TEST是否等于0,如果等于0就直接插入B表;
2。在表B上也建立一个触发器,一旦表B收到一条IS_TEST=0的数据,就去A表把这条数据删掉;
推荐方法1,方法2不太好