我有一个桌面播放器和一个主键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"更改"为自动递增?

推荐答案

我想出来了:只需在playerID中添加一个自动递增的默认值:

create sequence player_id_seq;
alter table player alter playerid set default nextval('player_id_seq');
Select setval('player_id_seq', 2000051 ); --set to the highest current value of playerID

Postgresql相关问答推荐

PostgreSQL:`row_alias为null`且`row_alias不是null`返回值不一致

如何高效地将行聚合到数组中,同时保留`NULL`来指示丢失的数据?

为什么我的应用程序接收的是空值而不是布尔值?

如何获得一起满足数量要求的物品? (WHILE 循环还是 CTE?)postgresql

将数组的所有元素循环到jsonb中并修改值

如何在 PostgreSQL 中使用正则表达式删除单词之间的所有特殊字符和多余空格

Psycopg2 在大型 Select 查询中耗尽内存

是否有 postgres CLOSEST 运算符?

等效于 Postgresql 中的 FOUND_ROWS() 函数

Postgres 图像未创建数据库

Postgres 在 WHERE id != int 查询中排除 NULL

Select 空字段

如何在带有 PostgreSQL 数据库的 Web 应用程序中拥有完整的离线功能?

在 PostgreSQL 中的表上禁用 DELETE?

获取全文搜索配置语言的完整列表

向 Postgres 整数数组添加值

Postgresql varchar 是否使用 unicode 字符长度或 ASCII 字符长度计算?

每个数据库提供程序类型允许的最大参数数是多少?

PostgreSQL 中跨多个表的索引

使用 Hibernate 注释映射 PostgreSQL 串行类型