【发布时间】:2021-02-19 00:54:26
【问题描述】:
我有下表:
DROP TABLE IF EXISTS TBL_CACL;
CREATE TABLE TBL_CACL (
ID INT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
NAME VARCHAR(250) UNIQUE NOT NULL
);
我可以像这样查询 postgres:
SELECT c.relname FROM pg_class c WHERE c.relkind = 'S';
确定表上序列的默认名称是tbl_cacl_id_seq
然后我可以像这样读取它的 nextVal:
SELECT nextval('tbl_cacl_id_seq');
在创建表后直接值为'1'
但是,如果我像这样插入几行数据:
INSERT INTO TBL_CACL
VALUES
(1, 'CACL_123'),
(2, 'CACL_234'),
(3, 'CACL_345');
我读取了表格的 nextVal,它返回 '2'
我原以为 tbl_cacl_id_seq 会是“4”。显然我误解了插入与 nextVal 的关系。为什么序列与插入不同步,如何按顺序获取它们?感谢您的建议。
【问题讨论】:
标签: postgresql