Postgresql 在postgrSQL中使用主键

Postgresql 在postgrSQL中使用主键,postgresql,go,pq,Postgresql,Go,Pq,我目前有一张桌子: userID | color | quantity ------------------------- 其中userID是主键。我的问题是,当我尝试插入到DB(已经有一个相同ID的项)时,我得到错误:pq:duplicate key value违反了唯一约束我正在使用Go with lib/pq package插入。 我不确定我是否对PK的用途有错误的想法,或者如果我不明白我需要制作什么样的表,主键是唯一标识表中每一行的键,因此需要是唯一的。如果表中需要更多具有相同user

我目前有一张桌子:

userID | color | quantity
-------------------------
其中userID是主键。我的问题是,当我尝试插入到DB(已经有一个相同ID的项)时,我得到错误:
pq:duplicate key value违反了唯一约束
我正在使用Go with lib/pq package插入。
我不确定我是否对PK的用途有错误的想法,或者如果我不明白我需要制作什么样的表,

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

当您将列(或列组)指定为主键时,PostgreSQL将对其施加唯一性约束,以便表中的两行不会具有该列的相同内容—这就是为什么您会看到约束冲突错误

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


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

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

当您将列(或列组)指定为主键时,PostgreSQL将对其施加唯一性约束,以便表中的两行不会具有该列的相同内容—这就是为什么您会看到约束冲突错误

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

是一个关于Postgres主键的详细教程,让您更好地了解主键的用法