使用postgres中表标识的最后一个值重置标识列

Nay*_*ani 5 postgresql database-sequence

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

ALTER TABLE patient 
    ALTER patientid SET NOT NULL,
    ALTER patientid ADD GENERATED ALWAYS AS IDENTITY (START WITH 1);
Run Code Online (Sandbox Code Playgroud)

在这里,我正在设置这样的东西:

 ALTER TABLE Patient 
   ALTER COLUMN PatientId RESTART WITH (select Max(patientId) + 1 from patient);
Run Code Online (Sandbox Code Playgroud)

a_h*_*ame 8

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

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

SELECT setval(pg_get_serial_sequence('patient', 'patientid'), 
                                      (select max(patientid) from patient));
Run Code Online (Sandbox Code Playgroud)