mysql - 在 phpMyAdmin 中设置外键?

标签 mysql phpmyadmin

我正在使用 phpMyAdmin 设置数据库。我有两个表(foobar),索引在它们的主键上。我正在尝试在它们之间创建一个关系表(foo_bar),使用它们的主键作为外键。

我将这些表创建为 MyISAM,但后来将这三个表都更改为 InnoDB,因为我读到 MyISAM 不支持外键。所有 id 字段都是 INT(11)

当我选择 foo_bar 表时,点击“关系 View ”链接,并尝试将 FK 列设置为 database.foo.id database.bar.id,它在每列旁边显示“未定义索引!”

我错过了什么?

澄清/更新

为了简单起见,我想继续使用 phpMyAdmin。我目前正在使用 XAMPP,它很容易让我专注于 PHP/CSS/Javascript,它带有 phpMyAdmin。

此外,虽然我还不能设置显式外键,但我确实有一个关系表并且可以执行如下连接:

SELECT * 
FROM foo 
INNER JOIN foo_bar 
ON foo.id = foo_bar.foo_id 
INNER JOIN bar
ON foo_bar.bar_id = bar.id;

没有在数据库中明确定义 FK 让我感到不舒服。

最佳答案

如果你想使用 phpMyAdmin 建立关系,你必须做两件事。首先,您必须在引用表中的外键列上定义一个索引(在您的情况下是 foo_bar.foo_id)。然后,转到关系 View (在引用表中)并选择引用列(在您的情况下为 foo.id)以及更新和删除操作。

如果您有多个相互链接的表,我认为外键很有用,特别是如果您正确设置引用选项,您的删除脚本将变得非常短。

编辑:确保两个表都选择了 InnoDB 引擎。

关于mysql - 在 phpMyAdmin 中设置外键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/459312/

相关文章:

mysql - Rails 4 应用程序 'Incorrect string value' 中 Mysql 错误的最佳解决方案?

集合中的 MySQL REPLACE()

mysql - 如何在 phpmyadmin 中设置 max_allowed_pa​​cket?

mysql - 在MySQL语句中选择特定月份

mysql - PHPMyadmin 工具导入速度慢

php - MYSQL同时插入和删除IMPACT

MySQL 查询单个表以查找多行

MySQL 选择 DISTINCT 列 1、列 2From 表 order by 列 2 DESC

mysql - 小后缀 "1"突然出现在PhpMyAdmin 'id'列中

PhpMyAdmin 4.6.6 OpenSSL 错误