MySQL-为什么我不能将外键添加到指向一列的多列中?

理查德·罗德里格斯(Richard Rodriguez)

我有一个名为的表格foodlist,其中包含食物:

CREATE TABLE `foodlist` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `name` varchar(100) DEFAULT NULL,
  PRIMARY KEY (`id`),
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

示例数据:

id | name
1  | Apple
2  | Banana
3  | Cinnamon

然后我有一张可以一起吃的食物组合表:

CREATE TABLE `foodlist-also_eat` (
  `originalFood` int(10) NOT NULL,
  `alsoFood` int(10) NOT NULL,
  PRIMARY KEY (`originalFood`,`alsoFood`),
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

这意味着,如果您可以将苹果和香蕉一起吃,则输入为:

originalFood | alsoFood
1              2

现在,我要做的就是在foodlist-also_eat表中添加外键

我可以为添加一个originalFood

ALTER TABLE `foodlist-also_eat`
ADD FOREIGN KEY (`originalFood`) REFERENCES `foodlist` (`id`)
ON DELETE RESTRICT ON UPDATE RESTRICT;

查询确定。

但是,我无法继续为添加一个alsoFood

ALTER TABLE `foodlist-also_eat`
ADD FOREIGN KEY (`alsoFood`) REFERENCES `foodlist` (`id`)
ON DELETE RESTRICT ON UPDATE RESTRICT;

源列和目标列必须具有相同的数据类型,目标列上必须有一个索引,并且引用的数据必须存在。表'./dev@002dfood/foodlist@002dalso_eat'已存在

我在这里做错了什么?

雷文德·雷迪(Ravinder Reddy)

根据文档 Foreign key constraints

如果给出了CONSTRAINT符号子句,则符号值在数据库中必须是唯一的。如果未提供该子句,InnoDB会自动创建名称。

请注意,从5.0.38版本开始,InnoDB允许在该列上使用两个或多个外键,它们可以引用不同的表/列。它甚至允许具有相同定义但约束名称不同的外键。

为每个要定义的约束定义一个唯一的名称。

ALTER TABLE `foodlist-also_eat`
ADD constraint fk_of_flae 
    FOREIGN KEY (`originalFood`) 
    REFERENCES `foodlist` (`id`)
      ON DELETE RESTRICT ON UPDATE RESTRICT;

ALTER TABLE `foodlist-also_eat`
ADD constraint fk_af_flae 
    FOREIGN KEY (`alsoFood`) 
    REFERENCES `foodlist` (`id`)
      ON DELETE RESTRICT ON UPDATE RESTRICT;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么我不能将用户输入添加到数据库中,前端为java,后端为mysql?

来自分类Dev

在一列中查找文本,然后将文本添加到相邻列MYSQL

来自分类Dev

如何将两个mysql表列添加到datagridview中的一列?

来自分类Dev

我不能添加外键约束?MySQL的

来自分类Dev

MySql复合外键引用同一列

来自分类Dev

更新MySQL表以获取一列的值,将其添加到另一列,更改第一列的值

来自分类Dev

为什么我的 MySQL 复合索引的基数比同一列上的单个索引少?

来自分类Dev

为什么在MYSQL中不能将UNSIGNED用作FOREIGN KEY?

来自分类Dev

将字符添加到mysql中的现有列

来自分类Dev

添加到 mysql 的新列在 Hive 中反映相同

来自分类Dev

无法将列添加到表中 - mysql

来自分类Dev

将列添加到MySQL结果

来自分类Dev

如何将多个外键添加到表的一列中?

来自分类Dev

为什么我不能将0添加到CComSafeArray?

来自分类Dev

在mysql中添加外键

来自分类Dev

在mysql中,是否可以根据一列中的值添加一列?

来自分类Dev

为什么mysql的自动添加为外键检查的指标?

来自分类Dev

尝试添加外键时,为什么MYSQL错误?

来自分类Dev

为什么MySQL不接受我的外键?

来自分类Dev

为什么Mysql重命名我的外键?

来自分类Dev

为什么MySQL无法正确命名我的外键?

来自分类Dev

为什么MySQL不接受我的外键?

来自分类Dev

为什么不能将项目添加到我的向量中?

来自分类Dev

为什么我不能将数组作为成员添加到对象中

来自分类Dev

MySQL将多列数据插入一列

来自分类Dev

将多个返回的MySQL行添加到PHP中的同一数组键元素

来自分类Dev

在mysql中按一列分组

来自分类Dev

MySql:从结果的一列中选择值到多列中

来自分类Dev

MySQL:添加一列为NULL值的列

Related 相关文章

  1. 1

    为什么我不能将用户输入添加到数据库中,前端为java,后端为mysql?

  2. 2

    在一列中查找文本,然后将文本添加到相邻列MYSQL

  3. 3

    如何将两个mysql表列添加到datagridview中的一列?

  4. 4

    我不能添加外键约束?MySQL的

  5. 5

    MySql复合外键引用同一列

  6. 6

    更新MySQL表以获取一列的值,将其添加到另一列,更改第一列的值

  7. 7

    为什么我的 MySQL 复合索引的基数比同一列上的单个索引少?

  8. 8

    为什么在MYSQL中不能将UNSIGNED用作FOREIGN KEY?

  9. 9

    将字符添加到mysql中的现有列

  10. 10

    添加到 mysql 的新列在 Hive 中反映相同

  11. 11

    无法将列添加到表中 - mysql

  12. 12

    将列添加到MySQL结果

  13. 13

    如何将多个外键添加到表的一列中?

  14. 14

    为什么我不能将0添加到CComSafeArray?

  15. 15

    在mysql中添加外键

  16. 16

    在mysql中,是否可以根据一列中的值添加一列?

  17. 17

    为什么mysql的自动添加为外键检查的指标?

  18. 18

    尝试添加外键时,为什么MYSQL错误?

  19. 19

    为什么MySQL不接受我的外键?

  20. 20

    为什么Mysql重命名我的外键?

  21. 21

    为什么MySQL无法正确命名我的外键?

  22. 22

    为什么MySQL不接受我的外键?

  23. 23

    为什么不能将项目添加到我的向量中?

  24. 24

    为什么我不能将数组作为成员添加到对象中

  25. 25

    MySQL将多列数据插入一列

  26. 26

    将多个返回的MySQL行添加到PHP中的同一数组键元素

  27. 27

    在mysql中按一列分组

  28. 28

    MySql:从结果的一列中选择值到多列中

  29. 29

    MySQL:添加一列为NULL值的列

热门标签

归档