PostgreSQL 将自动递增添加到空 ID 列

PostgreSQL add auto increment to empty ID column

我在 PostgreSQL 中创建了 table,但我忘记添加 auto increment

如何更改 Postgres 中的空 Id 列以添加 auto increment

您需要创建一个属于该列的序列并将其设置为默认值。

例如

CREATE TABLE mytable (id int);

CREATE SEQUENCE mytable_id_seq OWNED BY mytable.id;

ALTER TABLE mytable ALTER COLUMN id SET DEFAULT nextval('mytable_id_seq');

从 Postgres 10 开始,建议为此使用 identity 列。

您可以使用 ALTER TABLE:

将现有列转换为标识列
alter table the_table
  alter id add generated always as identity;

如果 table 中已有数据,则需要同步序列:

select setval(pg_get_serial_sequence('the_table', 'id'), (select max(id) from the_table));