我目前有一张桌子:
userID | color | quantity
-------------------------
其中 userID 是主键。我的问题是当我尝试插入数据库时(已经有一个来自同一 ID 的项目)我收到错误:pq: duplicate key value violates unique constraint
我正在使用带有 lib/pq 包的 Go 来插入。我不确定我是否对使用 PK 有错误的想法,或者我不明白我需要制作什么样的表格
我目前有一张桌子:
userID | color | quantity
-------------------------
其中 userID 是主键。我的问题是当我尝试插入数据库时(已经有一个来自同一 ID 的项目)我收到错误:pq: duplicate key value violates unique constraint
我正在使用带有 lib/pq 包的 Go 来插入。我不确定我是否对使用 PK 有错误的想法,或者我不明白我需要制作什么样的表格
主键是唯一标识表中每一行的键,因此需要是唯一的。如果您userID
的表中需要更多相同的行,则userID
不能是主键。
当您将列(或列组)指定为主键时,PostgreSQL 将对它施加唯一性约束,因此表中的两行不会发生该列的相同内容 - 这就是您看到约束违规错误的原因。
您可以通过添加另一个 ID 列来解决此问题,该列将为每一行具有唯一值(例如自动递增序列)并使其成为主键而不是userID
.
这是 Postgres 中主键的详细教程,让您更好地了解主键的用法。