PostgreSQL是一種關(guān)系型數(shù)據(jù)庫(kù),和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開(kāi)始,增量的步長(zhǎng)為1,緩存為1的循環(huán)排序Sequence。
SQL語(yǔ)句如下:
CREATE SEQUENCE seq_commodity
INCREMENT 1
MINVALUE 1
MAXVALUE 9223372036854775807
START 1
CACHE 1
CYCLE; // 循環(huán),表示到最大值后從頭開(kāi)始
2、查找Sequence中的值
SELECT nextval('seq_commodity');
這里nextval表示下一個(gè)值
3、修改 Sequence
用alter sequence來(lái)修改,除了start以外的所有sequence參數(shù)都可以被修改,
alter sequence 的例子 (SQL語(yǔ)句)
ALTER SEQUENCE seq_commodity
INCREMENT 10
MAXVALUE 10000
CYCLE
NOCACHE ;
當(dāng)然如果想要修改start的值,可以先用 drop sequence刪掉,然后再重新創(chuàng)建。
4、刪除Drop Sequence
DROP SEQUENCE seq_commodity;
5、Sequence分配策略
調(diào)用select nextval(seq_ commodity);返回下一個(gè)序列號(hào)后,系統(tǒng)優(yōu)先給用戶(hù)分配一個(gè)序號(hào),接著系統(tǒng)的次Sequence立刻加上設(shè)置的步長(zhǎng)(increment 1),不論此序號(hào)用戶(hù)是否使用;
調(diào)用select currval(seq_ commodity);返回當(dāng)前的序列號(hào),該序列號(hào)只要沒(méi)有被使用,就不會(huì)變化,如果當(dāng)前請(qǐng)求一直使用,那么不會(huì)再分配給其他的請(qǐng)求,因?yàn)樵撔蛄刑?hào)已經(jīng)分配給當(dāng)前請(qǐng)求。
補(bǔ)充:PostgreSQL 獲取 SEQUENCE 列表
我就廢話不多說(shuō)了,大家還是直接看代碼吧~
SELECT "c"."relname" FROM "pg_class" "c" WHERE "c"."relkind" = 'S';
結(jié)束~
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。
您可能感興趣的文章:- postgresql 中的序列nextval詳解
- PostgreSQL 序列綁定字段與不綁定字段的區(qū)別說(shuō)明
- PostgreSQL 序列增刪改案例
- postgresql重置序列起始值的操作
- postgresql 實(shí)現(xiàn)更新序列的起始值
- postgresql修改自增序列操作
- Postgresql數(shù)據(jù)庫(kù)之創(chuàng)建和修改序列的操作