6

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

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);
4

1 回答 1

12

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

运行该add generated always部分后,您可以使用以下语句调整序列:

SELECT setval(pg_get_serial_sequence('patient', 'patientid'), 
                                      (select max(patientid) from patient));
于 2019-04-13T10:53:33.203 回答