我想将现有的列更改为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);
答案 0 :(得分:1)
标识列也由序列支持,pg_get_serial_sequence()
将返回该序列名称。可以与setval()
一起使用。
运行add generated always
部分后,您可以使用以下语句调整顺序:
select setval(pg_get_serial_sequence('patient', 'patientid',
(select max(patientid) from patient));