最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

postgresql 中的序列nextval詳解

 更新時(shí)間:2021年02月01日 16:41:48   作者:一碗面  
這篇文章主要介紹了postgresql 中的序列nextval詳解,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧

一、postgresql中的序列

1.1 場景需求

需要向下圖一樣,需要對產(chǎn)品編碼編碼設(shè)置一個(gè)序列。編碼規(guī)則 SKU + 序列號:

1.2 序列

序列是基于bigint算法的,因此范圍是不能超過一個(gè)八字節(jié) 整數(shù)的范圍(-9223372036854775808 到 9223372036854775807)。

由于nextval和setval調(diào)用絕不會(huì)回滾, 如果需要序數(shù)的"無間隙"分配,則不能使用序列對象。可以 通過在一個(gè)只包含一個(gè)計(jì)數(shù)器的表上使用排他鎖來構(gòu)建無間隙的分配, 但是這種方案比序列對象開銷更大,特別是當(dāng)有很多事務(wù)并發(fā)請求序數(shù)時(shí)

創(chuàng)建和使用語法:

CREATE SEQUENCE serial START 101;
SELECT nextval('serial');
 nextval
---------
 101

本節(jié)描述用于操作序列對象的函數(shù),序列對象也被稱為序列生成器或者就是序列。

序列對象都是用CREATE SEQUENCE創(chuàng)建的特殊的單行表。

序列對象通常用于為表的行生成唯一的標(biāo)識符。

表 中列出的這些序列函數(shù),可以為我們從序列對象中獲取連續(xù)的序列值提供了簡單的、多用戶安全的 方法。

獲取序列值是安全的,可以用來和其他鍵組合形成唯一主鍵。

補(bǔ)充:PostgreSQL中序列相關(guān)函數(shù) nextval、currval、lastval、setval、setval

PostgreSQL中序列主要涉及到的函數(shù)是

函數(shù) 返回類型 描述
nextval(regclass) bigint 遞增序列對象到它的下一個(gè)數(shù)值并且返回該值。這個(gè)動(dòng)作是自動(dòng)完成的。即使多個(gè)會(huì)話并發(fā)運(yùn)行nextval,每個(gè)進(jìn)程也會(huì)安全地收到一個(gè)唯一的序列值。
currval(regclass) bigint 在當(dāng)前會(huì)話中返回最近一次nextval抓到的該序列的數(shù)值。(如果在本會(huì)話中從未在該序列上調(diào)用過 nextval,那么會(huì)報(bào)告一個(gè)錯(cuò)誤。)請注意因?yàn)榇撕瘮?shù)返回一個(gè)會(huì)話范圍的數(shù)值,而且也能給出一個(gè)可預(yù)計(jì)的結(jié)果,因此可以用于判斷其它會(huì)話是否執(zhí)行過nextval。
lastval() bigint 返回當(dāng)前會(huì)話里最近一次nextval返回的數(shù)值。這個(gè)函數(shù)等效于currval,只是它不用序列名為參數(shù),它抓取當(dāng)前會(huì)話里面最近一次nextval使用的序列。如果當(dāng)前會(huì)話還沒有調(diào)用過nextval,那么調(diào)用lastval將會(huì)報(bào)錯(cuò)。
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才開始遞增該序列。

注意序列名中有大寫字母時(shí),regclass參數(shù)值需要用雙引號括和單引號一起括起來,比如:

select nextval('"ACT_ChecklistItem_Id_seq"');

除了setval函數(shù),還有另一種方法也是修改sequence的start_value,也是會(huì)更新序列的當(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)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。

相關(guān)文章

  • PostgreSql觸發(fā)器創(chuàng)建、使用以及刪除示例詳解

    PostgreSql觸發(fā)器創(chuàng)建、使用以及刪除示例詳解

    在PostgreSQL中觸發(fā)器函數(shù)是一個(gè)沒有參數(shù)并且返回trigger類型的函數(shù),這篇文章主要給大家介紹了關(guān)于PostgreSql觸發(fā)器創(chuàng)建、使用以及刪除的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-03-03
  • 使用Postgresql 實(shí)現(xiàn)快速插入測試數(shù)據(jù)

    使用Postgresql 實(shí)現(xiàn)快速插入測試數(shù)據(jù)

    這篇文章主要介紹了使用Postgresql 實(shí)現(xiàn)快速插入測試數(shù)據(jù),具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • docker安裝Postgresql數(shù)據(jù)庫及基本操作

    docker安裝Postgresql數(shù)據(jù)庫及基本操作

    PostgreSQL是一個(gè)強(qiáng)大的開源對象-關(guān)系型數(shù)據(jù)庫管理系統(tǒng),以其高可擴(kuò)展性和標(biāo)準(zhǔn)化而著稱,這篇文章主要介紹了docker安裝Postgresql數(shù)據(jù)庫及基本操作的相關(guān)資料,需要的朋友可以參考下
    2025-03-03
  • postgreSQL中的case用法說明

    postgreSQL中的case用法說明

    這篇文章主要介紹了postgreSQL中的case用法說明,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • PostgreSQL如何查詢表大小(單獨(dú)查詢和批量查詢)

    PostgreSQL如何查詢表大小(單獨(dú)查詢和批量查詢)

    PostgreSQL提供了多個(gè)系統(tǒng)管理函數(shù)來查看表,索引表空間及數(shù)據(jù)庫的大小,這篇文章主要給大家介紹了關(guān)于PostgreSQL如何查詢表大小的相關(guān)資料,文中介紹的方法包括單獨(dú)查詢和批量查詢,需要的朋友可以參考下
    2024-02-02
  • PostGresql 實(shí)現(xiàn)四舍五入、小數(shù)轉(zhuǎn)換、百分比的用法說明

    PostGresql 實(shí)現(xiàn)四舍五入、小數(shù)轉(zhuǎn)換、百分比的用法說明

    這篇文章主要介紹了PostGresql 實(shí)現(xiàn)四舍五入、小數(shù)轉(zhuǎn)換、百分比的用法說明,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • PostgreSQL TIMESTAMP類型 時(shí)間戳操作

    PostgreSQL TIMESTAMP類型 時(shí)間戳操作

    這篇文章主要介紹了PostgreSQL TIMESTAMP類型 時(shí)間戳操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • PostgreSQL如何查看事務(wù)所占有的鎖實(shí)操指南

    PostgreSQL如何查看事務(wù)所占有的鎖實(shí)操指南

    這篇文章主要給大家介紹了關(guān)于PostgreSQL如何查看事務(wù)所占有鎖的相關(guān)資料,文中通過代碼以及圖文介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用PostgreSQL具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-10-10
  • CentOS 7下安裝PostgreSQL 9.6的教程分享

    CentOS 7下安裝PostgreSQL 9.6的教程分享

    PostgreSQL在我心目中的地位要遠(yuǎn)遠(yuǎn)高于MySQL,雖然流行對比MySQL低很對,但是功能性一致走在MySQL的前面。下面這篇文章主要介紹了CentOS 7下安裝PostgreSQL數(shù)據(jù)庫的方法,需要的朋友可以參考借鑒,一起來看看吧。
    2017-02-02
  • PostgreSQL中的COMMENT用法說明

    PostgreSQL中的COMMENT用法說明

    這篇文章主要介紹了PostgreSQL中的COMMENT用法說明,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01

最新評論

多伦县| 溧阳市| 长岭县| 沽源县| 江阴市| 吉木乃县| 汪清县| 屏边| 竹溪县| 东安县| 襄樊市| 靖州| 宜宾市| 景德镇市| 青川县| 湖北省| 武山县| 临沭县| 会东县| 左贡县| 汽车| 新和县| 密云县| 永济市| 天台县| 汉阴县| 迁西县| 邯郸市| 沾化县| 石屏县| 田东县| 康定县| 普定县| 四子王旗| 天津市| 松溪县| 康定县| 施甸县| 大港区| 富裕县| 渭源县|