http://chaoji-liangbin.blog.163.com/blog/static/25239212201091310355611/
1。
CREATE OR REPLACE TRIGGER TRIG_RMTP_STAT_FREQSECT_D
Before Update or Insert Or Delete on RMTP_STAT_FREQSECT_D
for each Row
DECLARE
SEQVAL NUMBER;
CNT NUMBER;
begin
SELECT SEQ_MSG_ID.NEXTVAL INTO SEQVAL FROM DUAL;
SELECT COUNT(*) INTO CNT FROM RMTP_STAT_FREQSECT_D_TEMP WHERE MSID=:NEW.MSID and STATMONTH=:New.STATMONTH;
If inserting Then
IF CNT=0 THEN
INSERT INTO RMTP_STAT_FREQSECT_D_TEMP (MSID,STATMONTH,FREQOCC1,FREQOCC2,FREQOCC3,FREQOCC4,FREQOCC5,FREQOCC6,FREQOCC7,FREQOCC8,FREQOCC9,FREQOCC10 ,FREQOCC11,NOTE,MSG_ID,MSG_STATUS,MSG_OP)
VALUES (:NEW.MSID,:NEW.STATMONTH,:NEW.FREQOCC1,:NEW.FREQOCC2,:NEW.FREQOCC3,:NEW.FREQOCC4,:NEW.FREQOCC5,:NEW.FREQOCC6,:NEW.FREQOCC7,:NEW.FREQOCC8,:NEW.FREQOCC9,:NEW.FREQOCC10 ,:NEW.FREQOCC11,:NEW.NOTE,SEQVAL, 'NEW', 'I');
ELSE
update RMTP_STAT_FREQSECT_D_TEMP set FREQOCC1=:NEW.FREQOCC1,FREQOCC2=:NEW.FREQOCC2,
FREQOCC3=:NEW.FREQOCC3,FREQOCC4=:NEW.FREQOCC4,FREQOCC5=:NEW.FREQOCC5,FREQOCC6=:NEW.FREQOCC6, FREQOCC7=:NEW.FREQOCC7,FREQOCC8=:NEW.FREQOCC8,FREQOCC9=:NEW.FREQOCC9,FREQOCC10=:NEW.FREQOCC10,
FREQOCC11=:NEW.FREQOCC11,NOTE=:NEW.NOTE,MSG_OP='U',MSG_STATUS='NEW' where MSID=:NEW.MSID and STATMONTH=:New.STATMONTH;
END IF;
Elsif UPDATING Then
update RMTP_STAT_FREQSECT_D_TEMP set FREQOCC1=:NEW.FREQOCC1,FREQOCC2=:NEW.FREQOCC2,
FREQOCC3=:NEW.FREQOCC3,FREQOCC4=:NEW.FREQOCC4,FREQOCC5=:NEW.FREQOCC5,FREQOCC6=:NEW.FREQOCC6, FREQOCC7=:NEW.FREQOCC7,FREQOCC8=:NEW.FREQOCC8,FREQOCC9=:NEW.FREQOCC9,FREQOCC10=:NEW.FREQOCC10,
FREQOCC11=:NEW.FREQOCC11,NOTE=:NEW.NOTE,MSG_OP='U',MSG_STATUS='NEW' where MSID=:NEW.MSID and STATMONTH=:New.STATMONTH;
Elsif deleting Then
update RMTP_STAT_FREQSECT_D_TEMP set FREQOCC1=:OLD.FREQOCC1,FREQOCC2=:OLD.FREQOCC2,
FREQOCC3=:OLD.FREQOCC3,FREQOCC4=:OLD.FREQOCC4,FREQOCC5=:OLD.FREQOCC5,FREQOCC6=:OLD.FREQOCC6, FREQOCC7=:OLD.FREQOCC7,FREQOCC8=:OLD.FREQOCC8,FREQOCC9=:OLD.FREQOCC9,FREQOCC10=:OLD.FREQOCC10,
FREQOCC11=:OLD.FREQOCC11,NOTE=:OLD.NOTE,MSG_OP='D',MSG_STATUS='NEW' where MSID=:OLD.MSID and STATMONTH=:OLD.STATMONTH;
End If;
end;
2。
drop trigger TRIG_RMTP_STAT_FREQSECT_D_TEMP;
CREATE OR REPLACE TRIGGER TRIG_RMTP_STAT_FREQSECT_D_TEMP Before Update or Insert on RMTP_STAT_FREQSECT_D_TEMP for each Row
begin
If inserting Then
INSERT INTO RMTP_STAT_FREQSECT_D (MSID,STATMONTH,FREQOCC1,FREQOCC2,FREQOCC3,FREQOCC4,FREQOCC5,FREQOCC6,FREQOCC7,FREQOCC8,FREQOCC9,FREQOCC10 ,FREQOCC11,NOTE,ISSUM)
VALUES (:NEW.MSID,:NEW.STATMONTH,:NEW.FREQOCC1,:NEW.FREQOCC2,:NEW.FREQOCC3,:NEW.FREQOCC4,:NEW.FREQOCC5,:NEW.FREQOCC6,:NEW.FREQOCC7,:NEW.FREQOCC8,:NEW.FREQOCC9,:NEW.FREQOCC10 ,:NEW.FREQOCC11,:NEW.NOTE,:NEW.ISSUM);
Elsif UPDATING Then
if :NEW.MSG_OP='D' then
delete from RMTP_STAT_FREQSECT_D where MSID=:NEW.MSID and STATMONTH=:NEW.STATMONTH ;
ELSE
update RMTP_STAT_FREQSECT_D set FREQOCC1=:NEW.FREQOCC1,FREQOCC2=:NEW.FREQOCC2,
FREQOCC3=:NEW.FREQOCC3,FREQOCC4=:NEW.FREQOCC4,FREQOCC5=:NEW.FREQOCC5,FREQOCC6=:NEW.FREQOCC6,FREQOCC7=:NEW.FREQOCC7,FREQOCC8=:NEW.FREQOCC8,FREQOCC9=:NEW.FREQOCC9,FREQOCC10=:NEW.FREQOCC10,
FREQOCC11=:NEW.FREQOCC11,NOTE=:NEW.NOTE,ISSUM=:NEW.ISSUM where MSID=:NEW.MSID and STATMONTH=:New.STATMONTH;
end if;
End If;
end;