Postgresql 如何将主键从整数转换为串行?
在Postgres 9.3表中,我有一个Postgresql 如何将主键从整数转换为串行?,postgresql,types,auto-increment,ddl,postgresql-9.3,Postgresql,Types,Auto Increment,Ddl,Postgresql 9.3,在Postgres 9.3表中,我有一个integer作为主键,具有自动递增顺序,但我已达到integer的最大值。如何将其从整数转换为串行? 我试过: 但同样的方法不适用于数据类型serial,而不是bigint。似乎我无法转换为串行?是一种伪数据类型,而不是实际的数据类型。下面是一个整数,自动执行一些额外的DDL命令: 创建一个序列(默认情况下具有匹配的名称) 将列设置为非空和默认值以从该序列中提取 使列“拥有”序列 详情: A也是一样,是围绕bigint列构建的。您想要bigint,
integer
作为主键,具有自动递增顺序,但我已达到integer
的最大值。如何将其从整数
转换为串行
?我试过: 但同样的方法不适用于数据类型
serial
,而不是bigint
。似乎我无法转换为串行
?是一种伪数据类型,而不是实际的数据类型。下面是一个整数
,自动执行一些额外的DDL命令:
设置为非空
和默认值以从该序列中提取bigint
列构建的。您想要bigint
,但您已经实现了这一点。要将现有的serial
列转换为bigserial
(或smallserial
),只需更改列的数据类型即可。序列通常基于bigint
,因此相同的序列可用于任何integer
类型
要将bigint
更改为bigserial
或将integer
更改为serial
,您只需手动执行其余操作:
实际数据类型仍然是integer
/bigint
。如果满足串行
的所有条件,某些客户端(如pgAdmin)将在反向工程的创建表
脚本中显示数据类型串行
。“但它不工作”不是正确的问题解释。@zerkms抱歉,我已转换为bigint,但我希望是串行的,如果存在差异,如果您能够将主键转换为bigint
,则添加一个序列的默认值,该序列的第一个值将是最大值+1。serial
为4个字节,并且具有与integer
参考相同的限制:您使用的语句已将其转换为bigint。唯一缺少的是添加一个序列作为默认值,如果它还不存在的话。
ALTER TABLE my_table ALTER COLUMN id SET DATA TYPE bigint;