ORACLE表資料觸發器,僅保留一天的實時資料

暖楓無敵發表於2014-12-23

1、只保留一天的實時資料的觸發器:

CREATE OR REPLACE PROCEDURE PR_SYIT_T_SMS
IS
    ENDTIME   DATE;
    
    --錯誤日誌變數宣告
    v_ErrorCode NUMBER;            -- Code for the error
    v_ErrorMsg VARCHAR2(200);      -- Message text for the error
    v_CurrentUser VARCHAR2(8);     -- Current database user
    v_Information VARCHAR2(100);   -- Information about the error

BEGIN
      
       -- 判斷時間,對歷史表進行插入操作,對當前表進行刪除資料,當前表只保留一天的資料
          ENDTIME:= SYSDATE -1;          
            
          --向歷史表寫入執行資料
          INSERT INTO T_SMS_HISTORY QUERY
               SELECT * FROM T_SMS WHERE WARNTM <= ENDTIME;

          --清除當前表中一天前的資料
          DELETE FROM T_SMS WHERE WARNTM <= ENDTIME;

          COMMIT;
       END IF;
      
    EXCEPTION
    WHEN OTHERS THEN
              
       ROLLBACK;

       -- Assign values to the log variables, using built-in functions.
       v_ErrorCode := SQLCODE;
       v_ErrorMsg := SQLERRM;
       v_CurrentUser := USER;
       v_Information := '使用者: ' || v_CurrentUser;
       INSERT INTO   ERROR_LOG (ERROR_CODE, ERROR_MESSAGE, ERROR_INFO, TIME)
                   VALUES (v_ErrorCode, v_ErrorMsg, v_Information, SYSDATE);
              
       COMMIT;
END;

2、建立JOB,定時執行上面的觸發器,即可,關於如何建立JOB,請谷歌、百度。

相關文章