我有两张桌子,一张叫“人”,另一张叫“结果”。
人员有身份证和球员名称。
结果有ID,玩家ID,分数和时间。
我认为结果中的“playerID”不应该是唯一的(因为同一个玩家可以有多个分数),但在执行此查询时,这似乎是合乎逻辑的:
insert into results (playerid, score, time) values
((select id from persons where playername = 'Dylan'),100,100);
我收到错误
ERROR: duplicate key value violates unique constraint "results_playerid_key"
DETAIL: Key (playerid)=(1) already exists.
这可能是数据库中的错误吗? (数据库由我所在大学的几位讲师管理,我无法更改任何设置。)
感谢您提供的任何见解。
答案 0 :(得分:1)
尽管对你(以及对我而言)看似合乎逻辑,但对管理数据库的人来说这听起来并不合乎逻辑,因此他们将playerid
的约束视为唯一。
也许出现了错误,他们想将id
设置为自动增量主键?您是否至少可以调查架构以查看即使您无法更改它们,也会看到哪些约束?
数据库背后的想法很可能是每个玩家真的有一个结果,你知道可能存在于这个选择背后的业务或应用程序逻辑吗?
答案 1 :(得分:0)
您是否尝试将结果表中的外键重命名为非“playerid”(我使用的是player_id或player_no)?还要确保它是结果表中的数字,而不是设置为唯一值。