admin

将列的数据类型更改为串行

sql

在pgsql中,有一种方法可以建立一个包含多个值的表,然后选择其中一个值(例如other_id),找出其最大值,并使表中的每个新条目都从该值开始递增。

我想这太容易了,没有机会工作。

ALTER TABLE address ALTER COLUMN new_id TYPE SERIAL

____________________________________ 
ERROR:  type "serial" does not exist

非常感谢您的见解!


阅读 153

收藏
2021-05-10

共1个答案

admin

快速浏览一下文档会告诉您

数据类型smallserial, serial 和bigserial 不是真实类型, 而只是创建唯一标识符列的符号方便

如果你想使现有的(整数)列作“串行”,只是手动创建序列(任意名称),其当前的值设置为当前的最大(或更大)address.new_id的值,在集作为address.new_id列的默认值。

要设置序列的值,请参见此处

SELECT setval('address_new_id_seq', 10000);

这只是一个示例,使用您自己的序列名称(任意,您可以创建它),并且其数字大于列的最大当前值。


更新: 正如卢卡斯的答案所指出的那样(应该接受),您还应该使用CREATE/ALTER SEQUENCE ... OWNED BY ...

2021-05-10