0

我目前有一张桌子:

userID | color | quantity
-------------------------

其中 userID 是主键。我的问题是当我尝试插入数据库时​​(已经有一个来自同一 ID 的项目)我收到错误:pq: duplicate key value violates unique constraint我正在使用带有 lib/pq 包的 Go 来插入。我不确定我是否对使用 PK 有错误的想法,或者我不明白我需要制作什么样的表格

4

1 回答 1

2

主键是唯一标识表中每一行的键,因此需要是唯一的。如果您userID的表中需要更多相同的行,则userID不能是主键。

当您将列(或列组)指定为主键时,PostgreSQL 将对它施加唯一性约束,因此表中的两行不会发生该列的相同内容 - 这就是您看到约束违规错误的原因。

您可以通过添加另一个 ID 列来解决此问题,该列将为每一行具有唯一值(例如自动递增序列)并使其成为主键而不是userID.

是 Postgres 中主键的详细教程,让您更好地了解主键的用法。

于 2020-09-03T03:22:49.580 回答