postgresql自增主鍵

leinminna發表於2020-09-27

postgresql自增主鍵這樣設定
“id” int2 NOT NULL DEFAULT nextval(‘process_map_id_seq’::regclass)

1.postgresql序列,mysql對比

在mysql 中建立自增主鍵:
id int(11) NOT NULL AUTO_INCREMENT COMMENT ‘Task ID’,
postgresql中也有自增主鍵,但不是這樣建立。

2. postgresql序列,建立

序列相當於mysql的自增主鍵,一個序列用於一張表。

-- 先建立序列,再使用序列
CREATE SEQUENCE process_map_id_seq START 10;
-- 建表sql,使用序列
"id" int2 NOT NULL DEFAULT nextval('process_map_id_seq'::regclass),

3. postgresql序列,刪除

-- 刪除表時,需要刪除序列
--  drop table process_map;
drop SEQUENCE process_map_id_seq CASCADE;

4. postgresql序列,主鍵衝突

建立序列後,不允許手動再資料庫建立資料,不然,之後的新增介面會報錯,主鍵衝突,
如何解決,執行下面的sql

-- 序列id加一 SEQUENCE
SELECT setval('process_map_id_seq ', (SELECT MAX(id) FROM process_map)+1);

相關文章