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

时间:2017-02-22 08:07:35

标签: postgresql

如何更改串行中的表列。这个专栏已经包含了数据,我不想丢失它们。 我试过这个:

ALTER TABLE tbl_user ADD COLUMN usr_id SERIAL PRIMARY KEY;

我收到此错误

  

错误:列" usr_id"关系" tbl_user"已经存在   ********** Erreur **********

我也尝试了这个:

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

  

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

查询转为成功,但不会更改列类型

1 个答案:

答案 0 :(得分:2)

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