ALTER SEQUENCE 修改序列解決唯一約束沖突 unique constraint violated


背景

    自增序列會遇到也會遇到唯一約束沖突嗎?是的,最常見的情況就是數據遷移之后,導致數據最大值超過序列值。

    軟件開發中不遇到些出乎意料的問題,總感覺不太夠勁。

修改序列(ALTER SEQUENCE)

    用於修改序列的當前值、最大值、最小值、緩存長度等。我們以Oracle為例,語法如下圖

    我們要做的是修改序列的當前值,與當前字段的數據最大值做同步。好,我們先來查詢一下當前序列當前值

SELECT seqname.CURRVAL FROM dual

  

    OR

SELECT last_number
FROM user_sequences
WHERE sequence_name='seqname'

  

 

    然后修改序列值,比如增加100

ALTER SEQUENCE seqname INCREMENT BY 100;

  

    最后校驗一下序列的nextval,一定要超過目前的數據最大值。

SELECT seqname.NEXTVAL FROM dual

  

參考資料

    Oracle ALTER SEQUENCE:https://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_2011.htm

 


免責聲明!

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



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