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

时间:2019-04-13 10:34:21

标签: postgresql database-sequence

我想将现有的列更改为Postgres数据库中的“自动身份”。
我使用以下脚本来设置自动标识列,并设置默认值以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);

1 个答案:

答案 0 :(得分:1)

标识列也由序列支持,pg_get_serial_sequence()将返回该序列名称。可以与setval()一起使用。

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

select setval(pg_get_serial_sequence('patient', 'patientid', 
                                      (select max(patientid) from patient));
相关问题