Oracle序列更新为主键最大值
我們?cè)谑褂?Oracle 數(shù)據(jù)庫(kù)的時(shí)候,有時(shí)候會(huì)選擇使用自增序列作為主鍵。但是在開發(fā)過程中往往會(huì)遇到一些不規(guī)范的操作,導(dǎo)致表的主鍵值不是使用序列插入的。這樣在數(shù)據(jù)移植的時(shí)候就會(huì)出現(xiàn)各種各樣的問題。當(dāng)然數(shù)據(jù)庫(kù)主鍵不使用序列是一種很好的方式,但是維護(hù)的是老代碼,所以并不能去修改它。于是寫一個(gè)腳本將當(dāng)前表的序列更新為主鍵最大值 + 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;
本文由個(gè)人 hexo 博客 co2fe.com 遷移
date: 2017-08-15 20:21:08
轉(zhuǎn)載于:https://www.cnblogs.com/manastudent/p/10190855.html
總結(jié)
以上是生活随笔為你收集整理的Oracle序列更新为主键最大值的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 团队项目需求分析
- 下一篇: /etc/profile、/etc/ba