业务要求: 删除一条数据时,要对这条数据备份,同时也要删除这条数据关联的子数据怎么写.create or replace trigger del_Qx_taskid2
before delete or instrt on t_qx_qxxx02
for each row
begin
insert into scgl.t_qx_qxxx_bak1102 select *from t_qx_qxxx1102 where proessid=:old.proessid;
delete from wf_amber.indywf_worklist_his where item_key=:old.processid;
delete from wf_amber.indywf_worklist_cur where item_key=:old.processid;
end;--

解决方案 »

  1.   


    CREATE OR REPLACE TRIGGER DEL_QX_TASKID2
      BEFORE DELETE OR INSTRT ON T_QX_QXXX02
      FOR EACH ROW
    DECLARE
      PRAGMA AUTONOMOUS_TRANSACTION; --这个要有
    BEGIN
      IF INSERTING THEN
        INSERT INTO SCGL.T_QX_QXXX_BAK1102(字段1,字段2,......)
          VALUES(:NEW.字段1,:NEW.字段2,.....);  ELSIF DELETING THEN
        INSERT INTO SCGL.T_QX_QXXX_BAK1102
          SELECT * FROM T_QX_QXXX1102 WHERE PROESSID = :OLD.PROESSID;
        DELETE FROM WF_AMBER.INDYWF_WORKLIST_HIS WHERE ITEM_KEY = :OLD.PROCESSID;
        DELETE FROM WF_AMBER.INDYWF_WORKLIST_CUR WHERE ITEM_KEY = :OLD.PROCESSID;
      END IF;
      COMMIT;EXCEPTION
      WHEN OTHERS THEN
        NULL; --自己写异常处理
    END;
      

  2.   

    当DELETE FROM T_QX_QXXX1102 WHERE T.JOBTICKETID='XXXXXXX' 一直在执行,最后报错.
      

  3.   


    都删除了好几分钟,就把它中断了. 中断后跳到 END;