我有一个表Player,以及一个主键playerID,它是character(7) . 我已经在这个表中有一些记录,还有一些其他表有playerID作为外键,这些表也有一些记录 .
如何将playerID设置为自动递增?读完一段时间后,我觉得我应该从一开始就这样做,但既然我现在不能这样做,那么我能做到吗?
例如,当我运行它
ALTER TABLE player ADD COLUMN key_column BIGSERIAL PRIMARY KEY;
它返回一个错误:
ERROR: multiple primary keys for table "player" are not allowed
如果我删除现有的playerID,那么引用它的其他表中的记录也将被删除 .
有没有办法将现有的主键playerID“更改”为自动增量?
3 回答
我想通了:只需在playerID中添加一个自动增量默认值:
输出:
我不认为你可以在一个表中有2个主键,并且因为playerID数据类型是字符(7)我不认为你可以将它改为自动增量 .
因此,如果您希望能够添加新的主键,我相信您必须删除playerID上的主键约束 .
由于您已经在表上有数据并且在其他表中使用playerID作为外键,我建议您复制播放器表并在第二个表上测试这些更改,以避免损坏您的数据 .
但在尝试所有这些之前,请确保使用创建要更改的表的相同db-user尝试进行此更改