當我們將資料匯入到表中後,為了避免後續資料插入失敗,一般情況下,會更改此表使用的序列的開始值。
如何修改?
使用n**icat的話,是無法對序列的當前值,進行修改的。
方式一:使用plsql;
開啟plsql,找到sequences
方式二:重建序列;
錯誤方式:
具體步驟是:刪除原來的序列,重新建立。
-- 刪除序列
drop sequence seq_meta_database;
-- 重建序列
create sequence seq_meta_database
minvalue 1
maxvalue 9999999999999999999
increment by 1
start with 20;
其中,start with 後面跟的就是起始值(下次呼叫此序列時,將會出現的值) 。
方式三:使用sql。
這乙個,是本文的重點;
我們由方式一可以知道:通過plsql的視覺化操作介面,是可以修改的。
那plsql到底是怎麼實現的?一起來看下:
選中序列--》右鍵--》編輯
第一步:修改起始值;
第二步:點選右下角的「檢視sql」。
說明:起初,這裡的起始值是300,我給它改成了30,實現的效果就是:
將序列的下乙個值改成了30,以後序列將會從30往後疊加。
然後,看下面這張圖,要實現序列起始值的修改,需要3步。
第一步:更改序列的步長;
alter sequence seq_meta_theme_table increment by -271 nocache;
我們需要明白乙個前提:
序列的值是怎麼來的?
當前值+步長(增量)
所以,我們想要修改序列的當前值,就必須自改序列的增量。
第二步:查詢序列值;
select seq_meta_theme_table.nextval from dual;
這一步的目的是:改變序列的當前值,讓其按照自己預設的增量來完成序列當前值的修改工作。
到這一步,該序列返回的當前值已經改成了300-271=29(下次呼叫將會返回30)。
第三步:將序列的增量改成1。
alter sequence seq_meta_theme_table increment by 1 cache 20;
-- modify the last number
alter sequence seq_meta_theme_table increment by -271 nocache;
select seq_meta_theme_table.nextval from dual;
alter sequence seq_meta_theme_table increment by 1 cache 20;
不信?我們把sql複製出來,執行一下。
把序列值變大(30-->300)
關於增量的計算:
如果更改後值(afternum)>現在序列的下乙個值(nextnum),增量(step)=afternum - nextnum;
如果更改後值(afternum)《現在序列的下乙個值(nextnum),增量(step)=afternum - nextnum - 1;
oracle修改序列當前值
很多時候,我們都會用到oracle序列,那麼我們怎麼修改序列的當前值呢?首先我們可以檢視當前序列值是多少,如下 select 序列名.nextval from dual 比方說我現在查出來值是10,那麼我要把當前值改成8,那麼可以這麼改 alter sequence 序列名 increment by...
Oracle 序列 查詢序列的值,修改序列的值
1.序列的語法形式 1 create sequence 序列名 2 increment by n3 start with n4 maxvalue n nomaxvalue 5 minvalue n nominvalue 6 cycle nocycle 7 cache n nocache 序列以 st...
儲存過程 修改當前序列值
在oracle中,序列 sequence 是可以產生一組等間隔的數值的一種生成器。常用來生成表的主鍵或者其他有規律或自增 減的字段值。當前專案是用來生成表的主鍵,由於某些原因,當前的某些序列值小於了對應表的id值,導致繼續使用序列生成id,會造成id重複。所以需要修改當前的序列值,使其大於對應表id...