我如何串行更改表列。这个专栏已经有数据了,我不想丢失它们..我试过这个:
ALTER TABLE tbl_user ADD COLUMN usr_id SERIAL PRIMARY KEY;
Run Code Online (Sandbox Code Playgroud)
我收到这个错误
错误:关系“tbl_user”的列“usr_id”已经存在********** Erreur ************
我也试过这个:
UPDATE tbl_user SET usr_id = nextval('seq_user') WHERE usr_id IS NULL;
查询成功返回:0 行受影响,71 毫秒执行时间。
查询成功但不更改列类型
serial
是一个伪类型。它确实是一个整数,所以你已经有了它的一半。缺少的是将序列分配为默认值:
alter table tbl_user
alter column usr_id set default nextval('seq_user')
Run Code Online (Sandbox Code Playgroud)
但在此之前需要找到 的最大值usr_id
并将其设置为最小序列值+1:
select max(usr_id) from tbl_user;
alter sequence seq_user minvalue 1001
Run Code Online (Sandbox Code Playgroud)