如何更改串行中的表列。这个专栏已经包含了数据,我不想丢失它们。 我试过这个:
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毫秒执行时间。
查询转为成功,但不会更改列类型
答案 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