91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PostgreSQL --序列與自增id的秘密

發布時間:2020-07-09 21:12:20 來源:網絡 閱讀:19014 作者:朱飛東 欄目:MySQL數據庫

一、PostgreSQL的自增id serial

1.2、serial的本質

我們在創建表時,經常需要使用到自增id,往往這么寫,

create table test (
    id serial,  #使用serial來創建一個自增id
    name varchar(64) not null
    )
    通過serial創建自增id,同時會創建屬于這個表的自增序列,并將id字段設置為not null

serial和bigserial類型不是真正的類型,只是為在表中設置唯一標識做的概念上的便利,本質上是創建了一個序列發生器,然后把自增字段的默認值設置為這個序列發生器的nextval

CREATE TABLE tablename (
    colname SERIAL
);
等價于
CREATE SEQUENCE tablename_colname_seq;
CREATE TABLE tablename(
    colname integer DEFAULT nextval('tablename_colname_seq') NOT NULL
);

1.2、序列的屬性

postgres=# \d+ test5_id_seq 
         Sequence "public.test5_id_seq"
Column     |  Type   |        Value        | Storage 
---------------+---------+---------------------+---------
 sequence_name | name    | test5_id_seq        | plain
 last_value    | bigint  | 1                   | plain
 start_value   | bigint  | 1                   | plain    #序列起始值
 increment_by  | bigint  | 1                   | plain     #每次遞增值
 max_value     | bigint  | 9223372036854775807 | plain        #最大值
 min_value     | bigint  | 1                   | plain       #最小值
 cache_value   | bigint  | 1                   | plain     
 log_cnt       | bigint  | 0                   | plain 
 is_cycled     | boolean | f                   | plain   #是否循環
 is_called     | boolean | f                   | plain
Owned by: public.test5.id

因為自增本質上是取序列發生器的下一個值,所以可以多個表共用一個序列發生器,可以實現多表唯一值,當然,還可以設置序列是否可循環來實現id循環
例如:
PostgreSQL --序列與自增id的秘密

?

二、序列

2.1創建序列

CREATE SEQUENCE name increment by 1 maxvalue 10 minvalue 1 start 1 cycle

2.2、序列操作

下一個值:nextval(regclass)
當前值:currval(regclass)
設置值:setval(regclass)

2.3、將序列綁定到表

create table test_seq (
    id int not null default nextval('my_seq1'), 
    name varchar(64)
    )
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

霍城县| 成安县| 柳江县| 达拉特旗| 文安县| 平遥县| 阿尔山市| 阿拉善左旗| 富川| 南岸区| 常州市| 龙游县| 叶城县| 通城县| 吉木乃县| 临武县| 河西区| 南川市| 固安县| 云浮市| 金塔县| 张北县| 洮南市| 兴义市| 巴青县| 台江县| 东兰县| 始兴县| 洞头县| 胶州市| 上饶市| 香河县| 九龙坡区| 监利县| 余干县| 舒城县| 龙胜| 汶上县| 万山特区| 静安区| 佛山市|