在phpMyAdmin中设置外键?
在phpMyAdmin中设置外键的问题是由于无法正确设置外键关系的选项而引起的。解决方法是参考MySQL官方文档提供的指南。
外键关系可有不同类型,包括CASCADE、RESTRICT、NO ACTION、SET NULL和SET DEFAULT。
CASCADE类型表示当主表中的行被删除或更新时,具有相匹配外键列的子表中的行也将被删除或更新。
RESTRICT类型表示在外键表中存在引用到被引用表中的值时,该值不能被更新或删除。
NO ACTION类型与RESTRICT非常相似。它们之间的主要区别是,使用NO ACTION时,完整性检查将在尝试修改表之后执行,而RESTRICT在尝试执行UPDATE或DELETE语句之前执行检查。如果引用完整性检查失败,两种类型的引用操作都会导致错误。
SET NULL类型表示当被引用的行被更新或删除时,引用行中的外键值将被设置为NULL。这仅适用于引用表中的相应列可为空。由于NULL的语义,具有外键列中的NULL的引用行不需要被引用的行。
SET DEFAULT类型与SET NULL类似,当被引用的行被更新或删除时,引用行中的外键值将被设置为列的默认值。
如果想了解更多详情,可以直接参考MySQL官方文档:dev.mysql.com/doc/refman/5.6/en/create-table-foreign-keys.html
在phpMyAdmin中设置外键的方法
问题的原因:MySQL仅支持对"InnoDB"表设置外键约束,因此在使用phpMyAdmin定义外键之前,首先要确保所使用的表是"InnoDB"类型的。
解决方法:
1. 对于两个表,进入操作标签,将它们的类型更改为"InnoDB"。
2. 确保ID是父表的主键(或至少是一个索引列)。
3. 在子表中,为PID列定义一个索引。
4. 在查看子表的结构标签时,点击位于"add fields"部分上方的"relation view"链接。
5. 您将看到一个表格,每一行对应于父表中的一个索引列。每一行中的第一个下拉菜单允许您选择索引列引用的TABLE->COLUMN。在PID所在的行中,选择PARENT->ID,并点击GO。
通过对子表进行导出操作,您将看到PID列已经创建了一个外键约束。
哇,这是非常重要的知识。当我在寻找添加外键的帮助时,并不是第一次找到这个页面,希望这种方法能被更多地提及。
问题:在phpMyAdmin中设置外键的原因是什么?如何解决该问题?
原因:
- 如果要在phpMyAdmin中设置关系,首先需要在引用表的外键列上定义索引(在你的案例中是foo_bar.foo_id)。
- 然后,进入关系视图(在引用表中),选择被引用的列(在你的案例中是foo.id)以及更新和删除操作。
解决方法:
- 确保两个表都选择了InnoDB引擎。
- 如果关系视图链接没有显示,请确保你的表的类型是InnoDB(在phpMyAdmin的操作选项卡下)。
- 如果你的表是InnoDB类型,但链接仍然没有显示,请注意在新版本的phpMyAdmin中,它在“结构”选项卡的顶部可见,在显示“浏览”,“结构”等选项卡的标签行的下方。
- 另外,对于MariaDB,引擎Aria也允许约束,但限于同一个数据库。因此,不需要使用InnoDB引擎。
以上是关于在phpMyAdmin中设置外键的原因和解决方法的内容。