我正在使用 phpMyAdmin 设置数据库。我有两个表(foo
和 bar
),索引在它们的主键上。我正在尝试在它们之间创建一个关系表(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/