在phpMyAdmin中设置外键?

8 浏览
0 Comments

在phpMyAdmin中设置外键?

我正在使用phpMyAdmin设置一个数据库。我有两个表(foobar),它们的主键已经建立了索引。我正在尝试创建一个关联表(foo_bar),使用它们的主键作为外键。\n我最初将这些表创建为MyISAM,但后来将它们全部改为InnoDB,因为我读到MyISAM不支持外键。所有的id字段都是INT(11)类型。\n当我选择foo_bar表,点击\"关系视图\"链接,并尝试将FK列设置为database.foo.iddatabase.bar.id时,它显示在每个列旁边显示\"未定义索引!\"。\n我错过了什么?

0
0 Comments

在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

0
0 Comments

在phpMyAdmin中设置外键的方法

问题的原因:MySQL仅支持对"InnoDB"表设置外键约束,因此在使用phpMyAdmin定义外键之前,首先要确保所使用的表是"InnoDB"类型的。

解决方法:

1. 对于两个表,进入操作标签,将它们的类型更改为"InnoDB"。

2. 确保ID是父表的主键(或至少是一个索引列)。

3. 在子表中,为PID列定义一个索引。

4. 在查看子表的结构标签时,点击位于"add fields"部分上方的"relation view"链接。

5. 您将看到一个表格,每一行对应于父表中的一个索引列。每一行中的第一个下拉菜单允许您选择索引列引用的TABLE->COLUMN。在PID所在的行中,选择PARENT->ID,并点击GO。

通过对子表进行导出操作,您将看到PID列已经创建了一个外键约束。

哇,这是非常重要的知识。当我在寻找添加外键的帮助时,并不是第一次找到这个页面,希望这种方法能被更多地提及。

0
0 Comments

问题:在phpMyAdmin中设置外键的原因是什么?如何解决该问题?

原因:

- 如果要在phpMyAdmin中设置关系,首先需要在引用表的外键列上定义索引(在你的案例中是foo_bar.foo_id)。

- 然后,进入关系视图(在引用表中),选择被引用的列(在你的案例中是foo.id)以及更新和删除操作。

解决方法:

- 确保两个表都选择了InnoDB引擎。

- 如果关系视图链接没有显示,请确保你的表的类型是InnoDB(在phpMyAdmin的操作选项卡下)。

- 如果你的表是InnoDB类型,但链接仍然没有显示,请注意在新版本的phpMyAdmin中,它在“结构”选项卡的顶部可见,在显示“浏览”,“结构”等选项卡的标签行的下方。

- 另外,对于MariaDB,引擎Aria也允许约束,但限于同一个数据库。因此,不需要使用InnoDB引擎。

以上是关于在phpMyAdmin中设置外键的原因和解决方法的内容。

0