欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

postgresql 中的序列nextval詳解

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

一、postgresql中的序列

1.1 場景需求

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

1.2 序列

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

由于nextval和setval調用絕不會回滾, 如果需要序數的"無間隙"分配,則不能使用序列對象??梢?通過在一個只包含一個計數器的表上使用排他鎖來構建無間隙的分配, 但是這種方案比序列對象開銷更大,特別是當有很多事務并發(fā)請求序數時

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

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

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

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

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

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

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

補充:PostgreSQL中序列相關函數 nextval、currval、lastval、setval、setval

PostgreSQL中序列主要涉及到的函數是

函數 返回類型 描述
nextval(regclass) bigint 遞增序列對象到它的下一個數值并且返回該值。這個動作是自動完成的。即使多個會話并發(fā)運行nextval,每個進程也會安全地收到一個唯一的序列值。
currval(regclass) bigint 在當前會話中返回最近一次nextval抓到的該序列的數值。(如果在本會話中從未在該序列上調用過 nextval,那么會報告一個錯誤。)請注意因為此函數返回一個會話范圍的數值,而且也能給出一個可預計的結果,因此可以用于判斷其它會話是否執(zhí)行過nextval。
lastval() bigint 返回當前會話里最近一次nextval返回的數值。這個函數等效于currval,只是它不用序列名為參數,它抓取當前會話里面最近一次nextval使用的序列。如果當前會話還沒有調用過nextval,那么調用lastval將會報錯。
setval(regclass, bigint) bigint 重置序列對象的計數器數值。設置序列的last_value字段為指定數值并且將其is_called字段設置為true,表示下一次nextval將在返回數值之前遞增該序列。
setval(regclass, bigint, boolean) bigint 重置序列對象的計數器數值。功能等同于上面的setval函數,只是is_called可以設置為true或false。如果將其設置為false,那么下一次nextval將返回該數值,隨后的nextval才開始遞增該序列。

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

select nextval('"ACT_ChecklistItem_Id_seq"');

除了setval函數,還有另一種方法也是修改sequence的start_value,也是會更新序列的當前值:

項目部署上去需要插入一些基礎數據,所以新增數據的ID不是從1開始,修改sequence的start_value (下次執(zhí)行nextval得到的是start_value,而不是start_value+1) 。

alter sequence s_seq restart with 2

相當于

select setval('s_seq',2,false)

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。

相關文章

  • postgresql 12版本搭建及主備部署操作

    postgresql 12版本搭建及主備部署操作

    這篇文章主要介紹了postgresql 12版本搭建及主備部署操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • 查詢PostgreSQL占多大內存的操作

    查詢PostgreSQL占多大內存的操作

    這篇文章主要介紹了查詢PostgreSQL占多大內存的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • PostgreSQL 設置允許訪問IP的操作

    PostgreSQL 設置允許訪問IP的操作

    這篇文章主要介紹了PostgreSQL 設置允許訪問IP的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • PostgreSQL中的psql命令詳解

    PostgreSQL中的psql命令詳解

    psql是PostgreSQL的一個命令行交互式客戶端工具,它具有非常豐富的功能,類似于Oracle的命令行工具sqlplus,這篇文章主要介紹了PostgreSQL-psql命令詳解,需要的朋友可以參考下
    2023-07-07
  • PostgreSQL 實現(xiàn)給查詢列表增加序號操作

    PostgreSQL 實現(xiàn)給查詢列表增加序號操作

    這篇文章主要介紹了PostgreSQL 實現(xiàn)給查詢列表增加序號操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • Postgresql中null值和空字符串舉例詳解

    Postgresql中null值和空字符串舉例詳解

    在使用?PostgreSql時,實際場景中會出現(xiàn)某個字段為空或空字符串,下面這篇文章主要給大家介紹了關于Postgresql中null值和空字符串的相關資料,需要的朋友可以參考下
    2024-02-02
  • 使用PostgreSQL為表或視圖創(chuàng)建備注的操作

    使用PostgreSQL為表或視圖創(chuàng)建備注的操作

    這篇文章主要介紹了使用PostgreSQL為表或視圖創(chuàng)建備注的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • Postgresql的日志配置教程詳解

    Postgresql的日志配置教程詳解

    這篇文章主要介紹了Postgresql的日志配置教程詳解,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-01-01
  • PostgreSQL有效地處理數據序列化和反序列化的方法

    PostgreSQL有效地處理數據序列化和反序列化的方法

    在 PostgreSQL 中,處理數據的序列化和反序列化是確保數據在存儲、傳輸和處理過程中的一致性和可用性的重要任務,這涉及到選擇合適的數據類型、轉換函數以及在應用程序與數據庫之間進行數據交互的策略,需要的朋友可以參考下
    2024-07-07
  • Postgresql開啟遠程訪問的步驟全紀錄

    Postgresql開啟遠程訪問的步驟全紀錄

    postgre一般默認為本地連接,不支持遠程訪問,所以如果要開啟遠程訪問,需要更改安裝文件的配置。下面這篇文章主要給大家介紹了關于Postgresql開啟遠程訪問的相關資料,需要的朋友可以參考借鑒,下面來一起看看吧。
    2018-03-03

最新評論