在PostgrSQL中使用主键

问题描述

我目前有一张桌子:

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

其中userID是主键。我的问题是,当我尝试插入数据库(已经具有相同ID的一项)时,出现错误消息:pq: duplicate key value violates unique constraint我正在使用带有lib / pq包的Go插入。 我不确定我对于使用PK的目的是否有错误的想法,或者我不知道我需要制作哪种类型的桌子

解决方法

主键是唯一标识表中每一行的键,因此必须是唯一的。如果您需要在表中使用相同的userID来容纳更多行,则userID不能成为主键。

当您指定一列(或一组列)作为主键时,PostgreSQL将在其上施加唯一性约束,因此表中的两行都不会具有该列的相同内容-这就是为什么您会看到约束违反错误的原因。

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

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

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...