網路城邦
上一篇 回創作列表 下一篇   字體:
修改 Oracle Sequence
2023/12/26 13:09:49瀏覽345|回應0|推薦0

不同於 MySQL 非常方便的 Auto Increment,Oracle 中必須自己建立及管理 Sequence 來記錄目前 Table 的序號,這篇文章記錄如何透過指令修改 Oracle Sequence。

原文連結:修改 Oracle Sequence

小蛙需要修改一個既有的 Sequence,之前差一些些的話,可以偷懶直接透過 .nextval 取得下一個 sequence 達到調整的效果

SELECT XXX_SEQ.nextval FROM DUAL;

但這次要調整三萬多個序號就沒辦法這樣做了,透過 Oracle SQL Developer 修改的話又跳出嚇人的警告畫面,因此還是乖乖採取保守方式來調整。

修改 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 numberBest way to reset an Oracle sequence to the next value in an existing column?

( 不分類不分類 )
回應 推薦文章 列印 加入我的文摘
上一篇 回創作列表 下一篇

引用
引用網址:https://classic-blog.udn.com/article/trackback.jsp?uid=s9134131&aid=180195914