【问题标题】:MySQL InnoDB doubled IDsMySQL InnoDB 将 ID 翻倍
【发布时间】:2010-09-30 12:15:23
【问题描述】:

http://img839.imageshack.us/img839/8241/stackoverflow.png

我创建了一个新的数据库。有 2 个表 classteacher。表class 中有一个字段class_leaderteacher 中的teacher_id 相关。 [1]

在 PHPMyAdmin 中的关系看起来像:[2]

teacher 包含一些记录。 [3]

当我在表 class 中添加新记录时:[4]

为什么class_leader 中的 ID 会翻倍? [5]

这是什么意思?我该怎么办?

感谢您的帮助。

【问题讨论】:

  • 我不太明白您所说的“class_leader 中的 ID 翻倍是什么意思。也许您可以向我们展示一些数据,并解释您期望发生的情况。看看页面,我怀疑您可能想要一对多的关系,因为一位老师可能有不止一堂课。
  • 在屏幕截图(第 5 部分)中,您可能会看到“2-”、“-2”、“1-”和“-1”值。我想了解为什么会这样。
  • 是的,它看起来确实很奇怪。在 SQL 会话中尝试 SELECT class_leader FROM class 会得到什么?
  • It SQL 查询只返回“1”和“2”。 img827.imageshack.us/img827/9721/image028.png
  • 我知道这只是 PHPMyAdmin 错误。数据库是正确的。你怎么看?

标签: mysql innodb foreign-key-relationship relationship


【解决方案1】:

因为班级和老师之间的关系是多对一的。在 class_leader 列中有重复的 id 是正常的。

对不起,我没有看到截图。如果您没有唯一的 class_leader 字段,则有重复的 id 是正常的。让它成为一个具有唯一值的列,你会没事的。

【讨论】:

  • 感谢您的回答。但是我设置了一对一的关系,你可以在屏幕截图的第一部分看到它。
  • 我将class_leader 设置为唯一值,但没有任何变化。
  • 如果你有一些代码来看看你是如何进行插入的。
  • INSERT INTO school.class ( class_id , class_number , class_letter , class_quantity , class_shedule , class_leader , ') 值'C', '25', '17', '1' ); -------- 在 PHPMyAdmin 中它看起来像 img684.imageshack.us/img684/9715/image024.png
  • 如果您将 class_leader 列设置为唯一,它将失败并出现错误,因为存在重复值。您能否为两个表发出 show create table 命令并在此处附加输出?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-18
  • 2010-10-19
  • 2016-10-12
相关资源
最近更新 更多