【问题标题】:Alter data type of a column to serial postgresql [duplicate]将列的数据类型更改为串行 postgresql [重复]
【发布时间】:2017-07-12 04:05:09
【问题描述】:

如何以串行方式更改表列。此列中已经有数据,我不想丢失它们.. 我试过这个:

ALTER TABLE tbl_user ADD COLUMN usr_id SERIAL PRIMARY KEY;

我收到这个错误

错误:关系“tbl_user”的列“usr_id”已经存在 ********** 错误的 **********

我也试过这个:

UPDATE tbl_user SET usr_id = nextval('seq_user') WHERE usr_id IS NULL;

查询成功返回:0 行受影响,71 毫秒执行时间。

查询成功但不改变列类型

【问题讨论】:

标签: postgresql


【解决方案1】:

serial 是一个伪类型。它确实是一个整数,所以你已经有一半了。缺少的是将序列分配为默认值:

alter table tbl_user 
alter column usr_id set default nextval('seq_user')

但在此之前需要找到usr_id的最大值,并将其设置为最小序列值+1:

select max(usr_id) from tbl_user;

alter sequence seq_user minvalue 1001

【讨论】:

    猜你喜欢
    • 2020-07-04
    • 1970-01-01
    • 2019-04-08
    • 2021-03-04
    • 1970-01-01
    • 2021-07-26
    • 2014-01-20
    • 2020-06-09
    • 2013-12-19
    相关资源
    最近更新 更多