ORACLE表数据触发器,仅保留一天的实时数据

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,请谷歌、百度。

你可能感兴趣的:(ORACLE表数据触发器,仅保留一天的实时数据)