當(dāng)前位置:首頁 >  站長(zhǎng) >  數(shù)據(jù)庫 >  正文

PostgreSQL Sequence序列的使用詳解

 2021-04-28 15:42  來源: 腳本之家   我來投稿 撤稿糾錯(cuò)

  域名預(yù)訂/競(jìng)價(jià),好“米”不錯(cuò)過

PostgreSQL是一種關(guān)系型數(shù)據(jù)庫,和Oracle、MySQL一樣被廣泛使用。平時(shí)工作主要使用的是PostgreSQL,所以有必要對(duì)其相關(guān)知識(shí)做一下總結(jié)和掌握,先總結(jié)下序列。

一、 Sequence序列

Sequence是一種自動(dòng)增加的數(shù)字序列,一般作為行或者表的唯一標(biāo)識(shí),用作代理主鍵。

1、Sequence的創(chuàng)建

例子:創(chuàng)建一個(gè)seq_commodity,最小值為1,最大值為9223372036854775807,從1開始,增量的步長(zhǎng)為1,緩存為1的循環(huán)排序Sequence。

SQL語句如下:

 CREATE SEQUENCE seq_commodity
 INCREMENT 1
 MINVALUE 1
 MAXVALUE 9223372036854775807
 START 1
 CACHE 1
 CYCLE; // 循環(huán),表示到最大值后從頭開始

 

2、查找Sequence中的值

1SELECT nextval('seq_commodity');

這里nextval表示下一個(gè)值

3、修改 Sequence

用alter sequence來修改,除了start以外的所有sequence參數(shù)都可以被修改,

alter sequence 的例子 (SQL語句)

ALTER SEQUENCE seq_commodity
 INCREMENT 10
 MAXVALUE 10000
 CYCLE
 NOCACHE ;

 

當(dāng)然如果想要修改start的值,可以先用 drop sequence刪掉,然后再重新創(chuàng)建。

4、刪除Drop Sequence

1DROP SEQUENCE seq_commodity;

5、Sequence分配策略

調(diào)用select nextval(seq_ commodity);返回下一個(gè)序列號(hào)后,系統(tǒng)優(yōu)先給用戶分配一個(gè)序號(hào),接著系統(tǒng)的次Sequence立刻加上設(shè)置的步長(zhǎng)(increment 1),不論此序號(hào)用戶是否使用;

調(diào)用select currval(seq_ commodity);返回當(dāng)前的序列號(hào),該序列號(hào)只要沒有被使用,就不會(huì)變化,如果當(dāng)前請(qǐng)求一直使用,那么不會(huì)再分配給其他的請(qǐng)求,因?yàn)樵撔蛄刑?hào)已經(jīng)分配給當(dāng)前請(qǐng)求。

補(bǔ)充:PostgreSQL 獲取 SEQUENCE 列表

我就廢話不多說了,大家還是直接看代碼吧~

1SELECT "c"."relname" FROM "pg_class" "c" WHERE "c"."relkind" = 'S';

結(jié)束~

文章來源:腳本之家

來源地址:https://www.jb51.net/article/205227.htm

申請(qǐng)創(chuàng)業(yè)報(bào)道,分享創(chuàng)業(yè)好點(diǎn)子。點(diǎn)擊此處,共同探討創(chuàng)業(yè)新機(jī)遇!

相關(guān)文章

熱門排行

信息推薦