修改 Oracle Sequence

2023/12/24閱讀時間約 2 分鐘
不同於 MySQL 非常方便的 Auto Increment,Oracle 中必須自己建立及管理 Sequence 來記錄目前 Table 的序號,這篇文章記錄如何透過指令修改 Oracle Sequence。
原文連結:修改 Oracle Sequence
小蛙需要修改一個既有的 Sequence,之前差一些些的話,可以偷懶直接透過 .nextval 取得下一個 sequence 達到調整的效果
SELECT XXX_SEQ.nextval FROM DUAL;
但這次要調整三萬多個序號就沒辦法這樣做了,透過 Oracle SQL Developer 修改的話又跳出嚇人的警告畫面,因此還是乖乖採取保守方式來調整。
目錄
  • 修改 INCREMENT
  • 取得下一個號碼
  • 恢復 INCREMENT
  • 與 Oracle 相關的文章

修改 INCREMENT

Oracle 的 Sequence 運作會有一個遞增量 (increment),小蛙遇到的狀況需要一次調整 30000,以下指令可以先將該 sequence 的遞增量修改成 30000,也就是每一次觸發 nextval 就會增加 30000。
ALTER SEQUENCE XXX_SEQ INCREMENT BY 30000;

取得下一個號碼

透過 .nextval 取得下一個號碼,可以發現假設原本序號是 30,遞增量是 1,那 .nextval 就會是 31;我們把遞增量改成 30000 之後,原本序號是 31,取得 .nextval 時就會得到 30031。
SELECT XXX_SEQ.nextval FROM DUAL;

恢復 INCREMENT

最後把遞增量改回 1 就完成了。
ALTER SEQUENCE XXX_SEQ INCREMENT BY 1;
可以透過以下語法看到目前 Sequence 的 last_number 是多少
SELECT last_number FROM user_sequences WHERE sequence_name = ‘XXX_SEQ’;
參考資料:修改Oracle Sequence的last number、Best way to reset an Oracle sequence to the next value in an existing column?
為什麼會看到廣告
記下來_Vocus
記下來_Vocus
留言0
查看全部
發表第一個留言支持創作者!
從 Google News 追蹤更多 vocus 的最新精選內容