How to create trigger BEFORE DELETE


Please check step by step :

1) Create table OC.X

CREATE TABLE OC.X
(
  ACCOUNT_NO                      VARCHAR2(12 BYTE),
  CURRENCY_CODE                   NUMBER(3),
  IS_SHIFTED                      NUMBER(1),
  PYMT_DUE_DATE_TOTAL             NUMBER(17,2),
  PYMT_CYCLE_TOTAL                NUMBER(17,2),
  PREV_STMT_DATE                  NUMBER(8),
  PREV_DUE_DATE                   NUMBER(8),
  STMT_DATE                       NUMBER(8),
  DUE_DATE                        NUMBER(8),
  DUE_OPTION_DATE                 NUMBER(8),
  NEXT_STMT_DATE                  NUMBER(8),
  NEXT_DUE_DATE                   NUMBER(8),
  REV_PRCH                        NUMBER(17,2),
  PRE_PRCH                        NUMBER(17,2),
  STM_PRCH                        NUMBER(17,2),
  REV_INS_PRCH                    NUMBER(17,2),
  PRE_INS_PRCH                    NUMBER(17,2),
  STM_INS_PRCH                    NUMBER(17,2),
  REV_CASH                        NUMBER(17,2),
  PRE_CASH                        NUMBER(17,2),
  STM_CASH                        NUMBER(17,2),
  REV_INS_CASH                    NUMBER(17,2),
  PRE_INS_CASH                    NUMBER(17,2),
  STM_INS_CASH                    NUMBER(17,2),
  REV_FC_CRD_TRANSFER             NUMBER(17,2),
  PRE_FC_CRD_TRANSFER             NUMBER(17,2),
  STM_FC_CRD_TRANSFER             NUMBER(17,2),
  REV_EXP_INS_PRCH                NUMBER(17,2),
  PRE_EXP_INS_PRCH                NUMBER(17,2),
  STM_EXP_INS_PRCH                NUMBER(17,2),
  STM_PYMT                        NUMBER(17,2),
  PRE_PYMT                        NUMBER(17,2),
  REM_PYMT                        NUMBER(17,2),
  REV_FA_DB                       NUMBER(17,2),
  PRE_FA_DB                       NUMBER(17,2),
  STM_FA_DB                       NUMBER(17,2),
  DSPT_DB                         NUMBER(17,2),
  DSPT_CR                         NUMBER(17,2),
  REV_INT_PRCH                    NUMBER(17,2),
  PRE_INT_PRCH                    NUMBER(17,2),
  STM_INT_PRCH                    NUMBER(17,2),
  REV_INT_CASH                    NUMBER(17,2),
  PRE_INT_CASH                    NUMBER(17,2),
  STM_INT_CASH                    NUMBER(17,2),
  REV_DUE_INT_PRCH                NUMBER(17,2),
  PRE_DUE_INT_PRCH                NUMBER(17,2),
  STM_DUE_INT_PRCH                NUMBER(17,2),
  REV_DUE_INT_CASH                NUMBER(17,2),
  PRE_DUE_INT_CASH                NUMBER(17,2),
  STM_DUE_INT_CASH                NUMBER(17,2),
  REV_OVER_LIMIT_AMNT_CASH        NUMBER(17,2),
  PRE_OVER_LIMIT_AMNT_CASH        NUMBER(17,2),
  STM_OVER_LIMIT_AMNT_CASH        NUMBER(17,2),
  REV_OVER_LIMIT_AMNT_PRCH        NUMBER(17,2),
  PRE_OVER_LIMIT_AMNT_PRCH        NUMBER(17,2),
  STM_OVER_LIMIT_AMNT_PRCH        NUMBER(17,2),
  REV_OVERLIMIT_FEE               NUMBER(17,2),
  PRE_OVERLIMIT_FEE               NUMBER(17,2),
  STM_OVERLIMIT_FEE               NUMBER(17,2),
  REV_OVERLIMIT_INT               NUMBER(17,2),
  PRE_OVERLIMIT_INT               NUMBER(17,2),
  STM_OVERLIMIT_INT               NUMBER(17,2),
  REV_FEE_DUE                     NUMBER(17,2),
  PRE_FEE_DUE                     NUMBER(17,2),
  STM_FEE_DUE                     NUMBER(17,2),
  REV_FEE_OTHER                   NUMBER(17,2),
  PRE_FEE_OTHER                   NUMBER(17,2),
  STM_FEE_OTHER                   NUMBER(17,2),
  REV_FEE_CASH                    NUMBER(17,2),
  PRE_FEE_CASH                    NUMBER(17,2),
  STM_FEE_CASH                    NUMBER(17,2),
  REV_FEE_CARD                    NUMBER(17,2),
  PRE_FEE_CARD                    NUMBER(17,2),
  STM_FEE_CARD                    NUMBER(17,2),
  REV_TAX1_INT                    NUMBER(17,2),
  PRE_TAX1_INT                    NUMBER(17,2),
  STM_TAX1_INT                    NUMBER(17,2),
  REV_TAX1_FEE                    NUMBER(17,2),
  PRE_TAX1_FEE                    NUMBER(17,2),
  STM_TAX1_FEE                    NUMBER(17,2),
  REV_TAX2                        NUMBER(17,2),
  PRE_TAX2                        NUMBER(17,2),
  STM_TAX2                        NUMBER(17,2),
  MIN_AMNT                        NUMBER(17,2),
  TOTAL_AMNT                      NUMBER(17,2),
  PREV_TOTAL_AMNT                 NUMBER(17,2),
  STMT_TOTAL_CR                   NUMBER(17,2),
  STMT_TOTAL_DB                   NUMBER(17,2),
  STMT_TOTAL_CASH                 NUMBER(17,2),
  STMT_TOTAL_FUV                  NUMBER(17,2),
  CARD_LIMIT                      NUMBER(17,2),
  PRINT_STMT                      NUMBER(1)     DEFAULT 0,
  CLOSED_STMT_DATE                NUMBER(8)     DEFAULT 0,
  STMT_STAT_CODE_BACKUP           VARCHAR2(1 BYTE),
  STMT_DELINQUENCY_PERIOD_BACKUP  NUMBER(3),
  TX_EXIST                        NUMBER(1),
  LIMIT_UPD_FUV                   NUMBER(17,2),
  OVERLIMIT_COUNTER_BACKUP        NUMBER(2),
  ACC_BILLING_CYCLE_BACKUP        VARCHAR2(3 BYTE),
  ACC_NEW_BILLING_CYCLE_BACKUP    VARCHAR2(3 BYTE),
  STMT_STAT_CHANGE_DATE           NUMBER(8),
  BUCKET_SEGMENT                  NUMBER(10),
  CHANGE_DATE                     DATE,
  PRE_YEAR_FEE_DUE                NUMBER(17,2),
  PRE_YEAR_FEE_CASH               NUMBER(17,2),
  PRE_YEAR_FEE_OTHER              NUMBER(17,2),
  PRE_YEAR_FEE_CARD               NUMBER(17,2),
  PRE_YEAR_OVERLIMIT_FEE          NUMBER(17,2),
  PRE_YEAR_OVERLIMIT_INT          NUMBER(17,2),
  PRE_YEAR_INT_PRCH               NUMBER(17,2),
  PRE_YEAR_INT_CASH               NUMBER(17,2),
  PRE_YEAR_DUE_INT_PRCH           NUMBER(17,2),
  PRE_YEAR_DUE_INT_CASH           NUMBER(17,2),
  TOTAL_WAITING_INST_AMNT         NUMBER(17,2)  DEFAULT 0,
  STMT_TOTAL_OVERL_AMNT           NUMBER(17,2),
  DELUSER                         VARCHAR2(20 CHAR),
  DELDATE                         DATE
)

2) Create TRIGGER OC.X_TRIGGER

CREATE OR REPLACE TRIGGER OC.X_TRIGGER
BEFORE DELETE
ON OC.Y
REFERENCING NEW AS New OLD AS Old
FOR EACH ROW
BEGIN

insert into OC.Y  (
  CURRENCY_CODE                   ,
  IS_SHIFTED                      ,
  PYMT_DUE_DATE_TOTAL             ,
  PYMT_CYCLE_TOTAL                ,
  PREV_STMT_DATE                  ,
  PREV_DUE_DATE                   ,
  STMT_DATE                       ,
  DUE_DATE                        ,
  DUE_OPTION_DATE                 ,
  NEXT_STMT_DATE                  ,
  NEXT_DUE_DATE                   ,
  REV_PRCH                        ,
  PRE_PRCH                        ,
  STM_PRCH                        ,
  REV_INS_PRCH                    ,
  PRE_INS_PRCH                    ,
  STM_INS_PRCH                    ,
  REV_CASH                        ,
  PRE_CASH                        ,
  STM_CASH                        ,
  REV_INS_CASH                    ,
  PRE_INS_CASH                    ,
  STM_INS_CASH                    ,
  REV_FC_CRD_TRANSFER             ,
  PRE_FC_CRD_TRANSFER             ,
  STM_FC_CRD_TRANSFER             ,
  REV_EXP_INS_PRCH                ,
  PRE_EXP_INS_PRCH                ,
  STM_EXP_INS_PRCH                ,
  STM_PYMT                        ,
  PRE_PYMT                        ,
  REM_PYMT                        ,
  REV_FA_DB                       ,
  PRE_FA_DB                       ,
  STM_FA_DB                       ,
  DSPT_DB                         ,
  DSPT_CR                         ,
  REV_INT_PRCH                    ,
  PRE_INT_PRCH                    ,
  STM_INT_PRCH                    ,
  REV_INT_CASH                    ,
  PRE_INT_CASH                    ,
  STM_INT_CASH                    ,
  REV_DUE_INT_PRCH                ,
  PRE_DUE_INT_PRCH                ,
  STM_DUE_INT_PRCH                ,
  REV_DUE_INT_CASH                ,
  PRE_DUE_INT_CASH                ,
  STM_DUE_INT_CASH                ,
  REV_OVER_LIMIT_AMNT_CASH        ,
  PRE_OVER_LIMIT_AMNT_CASH        ,
  STM_OVER_LIMIT_AMNT_CASH        ,
  REV_OVER_LIMIT_AMNT_PRCH        ,
  PRE_OVER_LIMIT_AMNT_PRCH        ,
  STM_OVER_LIMIT_AMNT_PRCH        ,
  REV_OVERLIMIT_FEE               ,
  PRE_OVERLIMIT_FEE               ,
  STM_OVERLIMIT_FEE               ,
  REV_OVERLIMIT_INT               ,
  PRE_OVERLIMIT_INT               ,
  STM_OVERLIMIT_INT               ,
  REV_FEE_DUE                     ,
  PRE_FEE_DUE                     ,
  STM_FEE_DUE                     ,
  REV_FEE_OTHER                   ,
  PRE_FEE_OTHER                   ,
  STM_FEE_OTHER                   ,
  REV_FEE_CASH                    ,
  PRE_FEE_CASH                    ,
  STM_FEE_CASH                    ,
  REV_FEE_CARD                    ,
  PRE_FEE_CARD                    ,
  STM_FEE_CARD                    ,
  REV_TAX1_INT                    ,
  PRE_TAX1_INT                    ,
  STM_TAX1_INT                    ,
  REV_TAX1_FEE                    ,
  PRE_TAX1_FEE                    ,
  STM_TAX1_FEE                    ,
  REV_TAX2                        ,
  PRE_TAX2                        ,
  STM_TAX2                        ,
  MIN_AMNT                        ,
  TOTAL_AMNT                      ,
  PREV_TOTAL_AMNT                 ,
  STMT_TOTAL_CR                   ,
  STMT_TOTAL_DB                   ,
  STMT_TOTAL_CASH                 ,
  STMT_TOTAL_FUV                  ,
  CARD_LIMIT                      ,
  PRINT_STMT                      ,
  CLOSED_STMT_DATE                ,
  STMT_STAT_CODE_BACKUP           ,
  STMT_DELINQUENCY_PERIOD_BACKUP  ,
  TX_EXIST                        ,
  LIMIT_UPD_FUV                   ,
  OVERLIMIT_COUNTER_BACKUP        ,
  ACC_BILLING_CYCLE_BACKUP        ,
  ACC_NEW_BILLING_CYCLE_BACKUP    ,
  STMT_STAT_CHANGE_DATE           ,
  BUCKET_SEGMENT                  ,
  CHANGE_DATE                     ,
  PRE_YEAR_FEE_DUE                ,
  PRE_YEAR_FEE_CASH               ,
  PRE_YEAR_FEE_OTHER              ,
  PRE_YEAR_FEE_CARD               ,
  PRE_YEAR_OVERLIMIT_FEE          ,
  PRE_YEAR_OVERLIMIT_INT          ,
  PRE_YEAR_INT_PRCH               ,
  PRE_YEAR_INT_CASH               ,
  PRE_YEAR_DUE_INT_PRCH           ,
  PRE_YEAR_DUE_INT_CASH           ,
  TOTAL_WAITING_INST_AMNT         ,
  STMT_TOTAL_OVERL_AMNT           ,
deluser,
deldate) values (
: old.CURRENCY_CODE                   ,
 : old.IS_SHIFTED                      ,
 : old.PYMT_DUE_DATE_TOTAL             ,
 : old.PYMT_CYCLE_TOTAL                ,
 : old.PREV_STMT_DATE                  ,
 : old.PREV_DUE_DATE                   ,
 : old.STMT_DATE                       ,
 : old.DUE_DATE                        ,
 : old.DUE_OPTION_DATE                 ,
 : old.NEXT_STMT_DATE                  ,
 : old.NEXT_DUE_DATE                   ,
 : old.REV_PRCH                        ,
 : old.PRE_PRCH                        ,
 : old.STM_PRCH                        ,
 : old.REV_INS_PRCH                    ,
 : old.PRE_INS_PRCH                    ,
 : old.STM_INS_PRCH                    ,
 : old.REV_CASH                        ,
 : old.PRE_CASH                        ,
 : old.STM_CASH                        ,
 : old.REV_INS_CASH                    ,
 : old.PRE_INS_CASH                    ,
 : old.STM_INS_CASH                    ,
 : old.REV_FC_CRD_TRANSFER             ,
 : old.PRE_FC_CRD_TRANSFER             ,
 : old.STM_FC_CRD_TRANSFER             ,
 : old.REV_EXP_INS_PRCH                ,
 : old.PRE_EXP_INS_PRCH                ,
 : old.STM_EXP_INS_PRCH                ,
 : old.STM_PYMT                        ,
 : old.PRE_PYMT                        ,
 : old.REM_PYMT                        ,
 : old.REV_FA_DB                       ,
 : old.PRE_FA_DB                       ,
 : old.STM_FA_DB                       ,
 : old.DSPT_DB                         ,
 : old.DSPT_CR                         ,
 : old.REV_INT_PRCH                    ,
 : old.PRE_INT_PRCH                    ,
 : old.STM_INT_PRCH                    ,
 : old.REV_INT_CASH                    ,
 : old.PRE_INT_CASH                    ,
 : old.STM_INT_CASH                    ,
 : old.REV_DUE_INT_PRCH                ,
 : old.PRE_DUE_INT_PRCH                ,
 : old.STM_DUE_INT_PRCH                ,
 : old.REV_DUE_INT_CASH                ,
 : old.PRE_DUE_INT_CASH                ,
 : old.STM_DUE_INT_CASH                ,
 : old.REV_OVER_LIMIT_AMNT_CASH        ,
 : old.PRE_OVER_LIMIT_AMNT_CASH        ,
 : old.STM_OVER_LIMIT_AMNT_CASH        ,
 : old.REV_OVER_LIMIT_AMNT_PRCH        ,
 : old.PRE_OVER_LIMIT_AMNT_PRCH        ,
 : old.STM_OVER_LIMIT_AMNT_PRCH        ,
 : old.REV_OVERLIMIT_FEE               ,
 : old.PRE_OVERLIMIT_FEE               ,
 : old.STM_OVERLIMIT_FEE               ,
 : old.REV_OVERLIMIT_INT               ,
 : old.PRE_OVERLIMIT_INT               ,
 : old.STM_OVERLIMIT_INT               ,
 : old.REV_FEE_DUE                     ,
 : old.PRE_FEE_DUE                     ,
 : old.STM_FEE_DUE                     ,
 : old.REV_FEE_OTHER                   ,
 : old.PRE_FEE_OTHER                   ,
 : old.STM_FEE_OTHER                   ,
 : old.REV_FEE_CASH                    ,
 : old.PRE_FEE_CASH                    ,
 : old.STM_FEE_CASH                    ,
 : old.REV_FEE_CARD                    ,
 : old.PRE_FEE_CARD                    ,
 : old.STM_FEE_CARD                    ,
 : old.REV_TAX1_INT                    ,
 : old.PRE_TAX1_INT                    ,
 : old.STM_TAX1_INT                    ,
 : old.REV_TAX1_FEE                    ,
 : old.PRE_TAX1_FEE                    ,
 : old.STM_TAX1_FEE                    ,
 : old.REV_TAX2                        ,
 : old.PRE_TAX2                        ,
 : old.STM_TAX2                        ,
 : old.MIN_AMNT                        ,
 : old.TOTAL_AMNT                      ,
 : old.PREV_TOTAL_AMNT                 ,
 : old.STMT_TOTAL_CR                   ,
 : old.STMT_TOTAL_DB                   ,
 : old.STMT_TOTAL_CASH                 ,
 : old.STMT_TOTAL_FUV                  ,
 : old.CARD_LIMIT                      ,
 : old.PRINT_STMT                      ,
 : old.CLOSED_STMT_DATE                ,
 : old.STMT_STAT_CODE_BACKUP           ,
 : old.STMT_DELINQUENCY_PERIOD_BACKUP  ,
 : old.TX_EXIST                        ,
 : old.LIMIT_UPD_FUV                   ,
 : old.OVERLIMIT_COUNTER_BACKUP        ,
 : old.ACC_BILLING_CYCLE_BACKUP        ,
 : old.ACC_NEW_BILLING_CYCLE_BACKUP    ,
 : old.STMT_STAT_CHANGE_DATE           ,
 : old.BUCKET_SEGMENT                  ,
 : old.CHANGE_DATE                     ,
 : old.PRE_YEAR_FEE_DUE                ,
 : old.PRE_YEAR_FEE_CASH               ,
 : old.PRE_YEAR_FEE_OTHER              ,
 : old.PRE_YEAR_FEE_CARD               ,
 : old.PRE_YEAR_OVERLIMIT_FEE          ,
 : old.PRE_YEAR_OVERLIMIT_INT          ,
 : old.PRE_YEAR_INT_PRCH               ,
 : old.PRE_YEAR_INT_CASH               ,
 : old.PRE_YEAR_DUE_INT_PRCH           ,
 : old.PRE_YEAR_DUE_INT_CASH           ,
 : old.TOTAL_WAITING_INST_AMNT         ,
 : old.STMT_TOTAL_OVERL_AMNT           ,
USER,
SYSDATE);
   EXCEPTION
     WHEN OTHERS THEN
       -- Consider logging the error and then re-raise
       RAISE;
END X_TRIGGER;
/

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: