【问题标题】:Why is this compound primary key not working as expected?为什么这个复合主键不能按预期工作?
【发布时间】:2011-02-27 20:13:58
【问题描述】:

我有一个带有复合主键的表“tbl_project_user_assignment”。

由project_id和user_id组成

它们中的每一个也分别是项目和用户表的外键。

目前,我在此表中有 2 个条目,如下所示...

项目 ID |用户身份 -------------------- 1 | 1 1 | 2

当我运行这个 sql 查询时...

插入 tbl_project_user_assignment (project_id, user_id) VALUES (2, 1);

...我收到以下错误消息:

违反完整性约束:1062 键的重复条目“1” 'FK_project_user'

FK_project_user 键是将 project_id 链接到 tbl_project id 的键。

这对我来说没有意义,因为我插入的值是唯一的......

有什么想法吗?

【问题讨论】:

  • 能贴出创建三个表的代码吗?

标签: mysql-error-1062 compound-key


【解决方案1】:

看起来FK_project_user 是一个唯一键。尝试暂时删除该约束并再次执行插入。

如果插入有效,请重新创建约束,确保不再将其标记为 unique

【讨论】:

  • 谢谢巴勃罗,那是正确的!
【解决方案2】:

我认为你应该有:

  • 与项目的外键关系
  • 与用户的外键关系
  • 对(项目、用户)的唯一约束
  • 可能是(项目、用户)组合的主键或单独的键字段 如果您选择组合 PK,您当然不需要额外的约束。

而且您似乎对用户有一个独特的约束(就其本身而言)。

发布show create table 声明会更有帮助。

【讨论】:

    猜你喜欢
    • 2016-11-11
    • 1970-01-01
    • 1970-01-01
    • 2016-01-10
    • 1970-01-01
    • 2015-06-09
    • 2017-02-23
    • 1970-01-01
    • 2015-09-07
    相关资源
    最近更新 更多