【发布时间】:2022-10-24 09:42:37
【问题描述】:
我想更新 RDS Postgres 11 中表的序列。尝试了以下命令,但我没有看到提交给数据库的更改。我什至使用了commit。
我错过了什么?
1. SELECT setval(pg_get_serial_sequence('table1', 'id'), coalesce(max(id),0) + 1, false) FROM table1;
2. SELECT setval('table1_id_seq', (SELECT COALESCE(max(id), 0) + 1 FROM table1));
ALTER TABLE table1 ALTER COLUMN id SET DEFAULT nextval('table1_id_seq');
CREATE TABLE public.table1 (
id serial4 NOT NULL, --default nextval('table1_id_seq'::regclass)
account_id int4 NOT NULL,
CONSTRAINT table1_pkey PRIMARY KEY (id) );
select currval('table1_id_seq') 返回6。
【问题讨论】:
-
我没有看到您如何使用
pg_get_serial_sequence为尚未设置序列的列获取序列?pg_get_serial_sequence仅适用于由列“拥有”的序列。在您的问题中添加table1的表定义。 -
CREATE TABLE public.table1 ( id serial4 NOT NULL, --default nextval('table1_id_seq'::regclass) --select currval('table_id_seq')=6 account_id int4 NOT NULL, CONSTRAINT table1_pkey PRIMARY KEY (id), );
-
请完整阅读 cmets。我继续按照我的要求将表定义添加到问题中。在任何情况下,您都会遇到复制/粘贴问题或命名问题。您将序列称为
table1_id_seq或table_id_seq。 -
@AdrianKlaver 它的错字。更新了问题。
-
我无法重现。在您的问题中添加来自
select * from table1_id_seq ;的结果。同样来自select max(id) from table1;。
标签: database postgresql amazon-rds auto-increment