一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

PostgreSQL如何為主鍵創(chuàng)建自增序列(Sequences)

 gideshi 2020-02-20

Morpheus丶 最后發(fā)布于2017-10-10 13:12:45 

引言

在持久層框架如Hibernate(JPA)、Mybatis中經(jīng)常會用到Sequences(函數(shù))去創(chuàng)建主鍵值,
PostgreSQL中,用serial數(shù)據(jù)類型的主鍵,數(shù)據(jù)庫會自動(dòng)創(chuàng)建Sequences,
那么我們自己設(shè)置的integer主鍵,如何設(shè)置添加Sequences呢?

目錄

一.測試環(huán)境:

1. pgadmin4 <點(diǎn)我查看如何安裝>

(沒有pgadmin4,請用命令行+SQL代替)

2. psql (PostgreSQL) 9.6.5

3. 結(jié)構(gòu)圖:

這里寫圖片描述

二.創(chuàng)建表:

1.表名 mytable

2.主鍵名 myid

3.模式名 gys

4.用戶名 postgres

測試數(shù)據(jù)庫中,創(chuàng)建表:(gys 是模式名,類似namespace,默認(rèn)是public)

SQL:

CREATE TABLE gys.mytable
(
    myid integer NOT NULL,
    PRIMARY KEY (myid)
)
WITH (
    OIDS = FALSE
);

ALTER TABLE gys.mytable
    OWNER to postgres;

三.創(chuàng)建Sequences:

1. Sequences 名稱 mytable_myid_seq

2.主鍵名 myid

3.模式名 gys

圖形pgadmin管理:

在pgadmin中,我們可以在sequences上右鍵,create -> sequences
如圖:
Step 1.
這里寫圖片描述

Step 2.
這里寫圖片描述

Step 3.

這里寫圖片描述

詳細(xì)參數(shù)1

OK了,生成的SQL:

CREATE SEQUENCE gys.mytable_myid_seq
    INCREMENT 1
    START 1
    MINVALUE 1
    MAXVALUE 99999999
    CACHE 1;

ALTER SEQUENCE gys.mytable_myid_seq
    OWNER TO postgres;

這里寫圖片描述

SQL創(chuàng)建:

語法:

CREATE [ TEMPORARY | TEMP ] SEQUENCE name [ INCREMENT [ BY ] increment ]
    [ MINVALUE minvalue | NO MINVALUE ] [ MAXVALUE maxvalue | NO MAXVALUE ]
    [ START [ WITH ] start ] [ CACHE cache ] [ [ NO ] CYCLE ]

SQL:

CREATE SEQUENCE gys.mytable_myid_seq
    INCREMENT 1
    START 1
    NO MINVALUE
    NO MAXVALUE
    CACHE 2;

四.為主鍵設(shè)置Sequences:

執(zhí)行SQL:

alter table gys.mytable alter column myid set default nextval('gys.mytable_myid_seq');

五.測試Sequences函數(shù):

所有序列函數(shù)參見”附錄:序列函數(shù)

SELECT nextval('gys.mytable_myid_seq');

這里寫圖片描述

INSERT INTO gys.mytable VALUES (nextval('gys.mytable_myid_seq'));
SELECT myid FROM gys.mytable;

這里寫圖片描述

參考資料:

https://www./docs/8.1/static/sql-createsequence.html

https://www./docs/9.1/static/functions-sequence.html

http://www.cnblogs.com/mchina/archive/2013/04/10/3012493.html

http://francs3.blog.163.com/blog/static/40576727201111715035318/

http://www.cnblogs.com/nirvana7/archive/2011/12/27/2303673.html

附錄:序列函數(shù)

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

    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    亚洲精品欧美精品一区三区| 91免费精品国自产拍偷拍| 日本美国三级黄色aa| 日韩欧美在线看一卡一卡| 国产精品一区二区三区黄色片| 国产又粗又猛又大爽又黄同志| 国产精品一区二区三区激情| 91国内视频一区二区三区| 精品国产一区二区欧美| 男人大臿蕉香蕉大视频| 老司机精品视频在线免费看| 国产亚洲二区精品美女久久| 日韩精品一区二区三区射精| 亚洲一区在线观看蜜桃| 久久精品亚洲精品一区| 国产又黄又爽又粗视频在线| 亚洲国产精品国自产拍社区| 精品人妻一区二区四区| 精品人妻一区二区四区| 免费在线播放一区二区| 99国产成人免费一区二区| 国产精品偷拍视频一区| 亚洲黄片在线免费小视频| 国产精品日韩精品一区| 福利视频一区二区在线| 99一级特黄色性生活片| 国产不卡最新在线视频| 精品午夜福利无人区乱码| 99秋霞在线观看视频| 国产精品国产亚洲区久久| 女生更色还是男生更色| 黄片美女在线免费观看| 久久久精品日韩欧美丰满| 中文字幕一区二区久久综合| 色哟哟国产精品免费视频| 国产大屁股喷水在线观看视频| 成年男女午夜久久久精品| 伊人久久青草地综合婷婷| 亚洲综合天堂一二三区| 欧美区一区二在线播放| 不卡免费成人日韩精品|