Postgresql 如何将主键从整数转换为串行?

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,

在Postgres 9.3表中,我有一个
integer
作为主键,具有自动递增顺序,但我已达到
integer
的最大值。如何将其从
整数
转换为
串行

我试过:

但同样的方法不适用于数据类型
serial
,而不是
bigint
。似乎我无法转换为
串行

是一种数据类型,而不是实际的数据类型。下面是一个
整数
,自动执行一些额外的DDL命令:

  • 创建一个序列(默认情况下具有匹配的名称)
  • 将列
    设置为非空
    和默认值以从该序列中提取
  • 使列“拥有”序列 详情:

    A也是一样,是围绕
    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;