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
轉載于:https://www.cnblogs.com/manastudent/p/10190855.html
總結
以上是生活随笔為你收集整理的Oracle序列更新为主键最大值的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 团队项目需求分析
- 下一篇: /etc/profile、/etc/ba