每天凌晨清空sequence,讓sequence每天從0開始

1:編寫存儲過程

CREATE OR REPLACE PROCEDURE seq_reset AS
  n    NUMBER(10);
  tsql VARCHAR2(100);
BEGIN
  EXECUTE IMMEDIATE 'select SQD_LSH.nextval from dual'
    INTO n;
  n    := - (n );
  tsql := 'alter sequence  SQD_LSH increment by ' || n;
  EXECUTE IMMEDIATE tsql;
  EXECUTE IMMEDIATE 'select  SQD_LSH.nextval from dual'
    INTO n;
    tsql := 'alter sequence SQD_LSH increment by 1';
  EXECUTE IMMEDIATE tsql;END seq_reset;

原理:先得到sequence的當前值,然後設置其步長爲這個值的相反數,在執行nextval相當於減去已經增長的部分,使sequence重新歸零,最後恢復步長爲1.
2: 創建一個 job 設置成每天運行這個 存儲過程

3:關於job的時間間隔,可參考一下博主的文章,附鏈接https://blog.csdn.net/wangjiajiachengcheng/article/details/51335871,https://blog.csdn.net/qq_40709468/article/details/81876828?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase,

有問題,歡迎交流

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章