Oracle序列更新為主鍵最大值


我們在使用 Oracle 數據庫的時候,有時候會選擇使用自增序列作為主鍵。但是在開發過程中往往會遇到一些不規范的操作,導致表的主鍵值不是使用序列插入的。這樣在數據移植的時候就會出現各種各樣的問題。當然數據庫主鍵不使用序列是一種很好的方式,但是維護的是老代碼,所以並不能去修改它。於是寫一個腳本將當前表的序列更新為主鍵最大值 + 1。

DECLARE
vnumber NUMBER;
nnumber NUMBER;
BEGIN
SELECT ((SELECT max(ana_id) FROM ANA_QUALITYSPEC_MON) -
ANAQUALITYSPECMONSEQ.nextval)
INTO vnumber
FROM dual;
IF vnumber > 0 THEN
EXECUTE IMMEDIATE 'ALTER SEQUENCE ANAQUALITYSPECMONSEQ INCREMENT BY ' ||
vnumber;
SELECT ANAQUALITYSPECMONSEQ.nextval INTO nnumber FROM dual;
EXECUTE IMMEDIATE 'ALTER SEQUENCE ANAQUALITYSPECMONSEQ INCREMENT BY 1 cache 20';
END IF;
END;

本文由個人 hexo 博客 co2fe.com 遷移
date: 2017-08-15 20:21:08


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM