函數(shù) | 返回類型 | 描述 |
nextval(regclass) | bigint | 遞增序列對象到它的下一個數(shù)值并且返回該值。這個動作是自動完成的。即使多個會話并發(fā)運(yùn)行nextval,每個進(jìn)程也會安全地收到一個唯一的序列值。 |
currval(regclass) | bigint | 在當(dāng)前會話中返回最近一次nextval抓到的該序列的數(shù)值。(如果在本會話中從未在該序列上調(diào)用過 nextval,那么會報(bào)告一個錯誤。)請注意因?yàn)榇撕瘮?shù)返回一個會話范圍的數(shù)值,而且也能給出一個可預(yù)計(jì)的結(jié)果,因此可以用于判斷其它會話是否執(zhí)行過nextval。 |
lastval() | bigint | 返回當(dāng)前會話里最近一次nextval返回的數(shù)值。這個函數(shù)等效于currval,只是它不用序列名為參數(shù),它抓取當(dāng)前會話里面最近一次nextval使用的序列。如果當(dāng)前會話還沒有調(diào)用過nextval,那么調(diào)用lastval將會報(bào)錯。 |
setval(regclass, bigint) | bigint | 重置序列對象的計(jì)數(shù)器數(shù)值。設(shè)置序列的last_value字段為指定數(shù)值并且將其is_called字段設(shè)置為true,表示下一次nextval將在返回?cái)?shù)值之前遞增該序列。 |
setval(regclass, bigint, boolean) | bigint | 重置序列對象的計(jì)數(shù)器數(shù)值。功能等同于上面的setval函數(shù),只是is_called可以設(shè)置為true或false。如果將其設(shè)置為false,那么下一次nextval將返回該數(shù)值,隨后的nextval才開始遞增該序列。 |
注意序列名中有大寫字母時,regclass參數(shù)值需要用雙引號括和單引號一起括起來,比如:
select nextval('"ACT_ChecklistItem_Id_seq"');
除了setval函數(shù),還有另一種方法也是修改sequence的start_value,也是會更新序列的當(dāng)前值:
項(xiàng)目部署上去需要插入一些基礎(chǔ)數(shù)據(jù),所以新增數(shù)據(jù)的ID不是從1開始,修改sequence的start_value (下次執(zhí)行nextval得到的是start_value,而不是start_value+1) 。
alter sequence s_seq restart with 2
相當(dāng)于
select setval('s_seq',2,false)
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。
標(biāo)簽:辛集 海西 杭州 昭通 濮陽 溫州 榆林 寶雞
巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《postgresql 中的序列nextval詳解》,本文關(guān)鍵詞 postgresql,中的,序列,nextval,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。