我想在Postgres数据库中将现有列更改为自动标识。
我不想使用Postgres SEQUENCE
。我想用GENERATED ALWAYS AS IDENTITY
。
我试过下面的脚本,但它没有工作。
ALTER TABLE public.patient ALTER COLUMN patientid Type int4
USING patientid::int4 GENERATED ALWAYS AS IDENTITY;
我该怎么办?
我想在Postgres数据库中将现有列更改为自动标识。
我不想使用Postgres SEQUENCE
。我想用GENERATED ALWAYS AS IDENTITY
。
我试过下面的脚本,但它没有工作。
ALTER TABLE public.patient ALTER COLUMN patientid Type int4
USING patientid::int4 GENERATED ALWAYS AS IDENTITY;
我该怎么办?
3条答案
按热度按时间qncylg1j1#
the documentation之后
如果列还没有
NOT NULL
约束,则添加该约束。可选子句START WITH start
更改记录的序列起始值。在DB<>Fiddle.中测试
55ooxyrt2#
假设您有一个表
patient
,该表先前被创建为并插入一行作为
首先创建一个序列,从ID的最大值开始+1迭代,并为您的列创建
default
并将列转换为主键
每当插入新行时,例如
你会注意到你成功地把你的列作为一个身份列
2uluyalo3#
可以使用动态SQL替换序列的初始值。
Test it in db<>fiddle