PostgreSQL創(chuàng)建自增序列、查詢序列及使用序列代碼示例
序列函數(shù):
函數(shù) | 返回類(lèi)型 | 描述 |
nextval(regclass) | bigint | 遞增序列對(duì)象到它的下一個(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)用過(guò) nextval,那么會(huì)報(bào)告一個(gè)錯(cuò)誤。)請(qǐng)注意因?yàn)榇撕瘮?shù)返回一個(gè)會(huì)話范圍的數(shù)值,而且也能給出一個(gè)可預(yù)計(jì)的結(jié)果,因此可以用于判斷其它會(huì)話是否執(zhí)行過(guò)nextval。 |
lastval() | bigint | 在當(dāng)前會(huì)話中返回最近一次nextval抓到的該序列的數(shù)值。(如果在本會(huì)話中從未在該序列上調(diào)用過(guò) nextval,那么會(huì)報(bào)告一個(gè)錯(cuò)誤。)請(qǐng)注意因?yàn)榇撕瘮?shù)返回一 返回當(dāng)前會(huì)話里最近一次nextval返回的數(shù)值。這個(gè)函數(shù)等效于currval,只是它不用序列名為參數(shù),它抓取當(dāng)前會(huì)話里面最近一次nextval使用的序列。如果當(dāng)前會(huì)話還沒(méi)有調(diào)用過(guò)nextval,那么調(diào)用lastval將會(huì)報(bào)錯(cuò)。 |
setval(regclass, bigint) | bigint | 重置序列對(duì)象的計(jì)數(shù)器數(shù)值。設(shè)置序列的last_value字段為指定數(shù)值并且將其is_called字段設(shè)置為true,表示下一次nextval將在返回?cái)?shù)值之前遞增該序列。 |
setval(regclass, bigint, boolean) | bigint | 重置序列對(duì)象的計(jì)數(shù)器數(shù)值。功能等同于上面的setval函數(shù),只是is_called可以設(shè)置為true或false。如果將其設(shè)置為false,那么下一次nextval將返回該數(shù)值,隨后的nextval才開(kāi)始遞增該序列。 |
CREATE SEQUENCE 創(chuàng)建序列
CREATE SEQUENCE "user_id_seq" START WITH 1 --開(kāi)始值 INCREMENT BY 1 --每次新增數(shù) NO MINVALUE --無(wú)最小值 NO MAXVALUE --無(wú)最大值 CACHE 1; --緩存序列數(shù)量
ALTER SEQUENCE 修改序列:
ALTER SEQUENCE "user_id_seq" START WITH 1 --開(kāi)始值 INCREMENT BY 1 --每次新增數(shù) NO MINVALUE --無(wú)最小值 NO MAXVALUE --無(wú)最大值 CACHE 1; --緩存序列數(shù)量
nextval查詢下一個(gè)序列值:
SELECT nextval('user_info_id_seq')
currval查詢當(dāng)前序列值:
SELECT currval('user_info_id_seq')
批量設(shè)置表自增序列值最大值:
SELECT 'SELECT SETVAL(''' || SUBSTRING ( sequence_name FROM '^(.*)[_]id_seq$' ) || '_id_seq'', (SELECT (MAX(id) + 1) FROM ' || SUBSTRING ( sequence_name FROM '^(.*)[_]id_seq$' ) || ') , true);' AS SQL FROM information_schema.sequences
總結(jié)
到此這篇關(guān)于PostgreSQL創(chuàng)建自增序列、查詢序列及使用序列的文章就介紹到這了,更多相關(guān)pgsql創(chuàng)建自增序列查詢序列內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
在windows下手動(dòng)初始化PostgreSQL數(shù)據(jù)庫(kù)教程
在windows下手動(dòng)初始化PG,是一件比較麻煩的事,下面我具體寫(xiě)一下過(guò)程,大家做一下參考。2014-09-09PostgreSQL基于Citus實(shí)現(xiàn)分布式集群的全過(guò)程
Citus是一個(gè)PostgreSQL擴(kuò)展,它將Postgres轉(zhuǎn)換為分布式數(shù)據(jù)庫(kù),因此您可以在任何規(guī)模上實(shí)現(xiàn)高性能,因客戶的需求,本文詳細(xì)闡述了PostgreSQL基于Citus實(shí)現(xiàn)的分布式集群的全過(guò)程,需要的朋友可以參考下2023-11-11

PostgreSQL12同步流復(fù)制搭建及主備切換方式

使用pg_basebackup對(duì)Postgre進(jìn)行備份與恢復(fù)的實(shí)現(xiàn)

使用PostgreSQL創(chuàng)建高級(jí)搜索引擎的代碼示例

PGSQL實(shí)現(xiàn)判斷一個(gè)空值字段,并將NULL值修改為其它值

使用PostgreSQL數(shù)據(jù)庫(kù)建立用戶畫(huà)像系統(tǒng)的方法

postgresql 數(shù)據(jù)庫(kù) 與TimescaleDB 時(shí)序庫(kù) join 在一起