在 postgres 中使用 table 身份的最后一个值重置身份列

Reset identity column with last value of table's identity in postgres

我想将我现有的列更改为 Postgres 数据库中的自动标识。
我使用下面的脚本设置自动标识列并设置默认从 1 开始。
但在这里我想将标识列值重置为 table 的最后一个值。
如果您有任何解决方案,请告诉我。

ALTER TABLE patient 
    ALTER patientid SET NOT NULL,
    ALTER patientid ADD GENERATED ALWAYS AS IDENTITY (START WITH 1);

这里我设置如下:

 ALTER TABLE Patient 
   ALTER COLUMN PatientId RESTART WITH (select Max(patientId) + 1 from patient);

标识列也由序列支持,pg_get_serial_sequence() 将 return 该序列名称。可以和setval().

一起使用

在 运行 之后的 add generated always 部分,您可以使用以下语句调整顺序:

SELECT setval(pg_get_serial_sequence('patient', 'patientid'), 
                                      (select max(patientid) from patient));