1

假设我在 MySQL 数据库中有一堆 MyISAM 表。我知道如果我的表是 InnoDB MySQL Workbench 会自动获取表之间的关系。但是,如果我的表是 MyISAM,有没有一种方法可以选择在 MySQL Workbench 中用作外键的列,而不需要 MySQL Workbench 在我的表模式中添加列?例如,假设我在一个名为的表中有这些列users

id              PRIMARY KEY
username        VARCHAR (255)
password        VARCHAR (255)
email           VARCHAR (255)
user_type_id    INT

正如您在上面看到的,user_type_id将是来自名为 的表的外键user_typesusers如果我在我的表和user_typesMySQL Workbench 中添加多对一关系,user_types_id则会自动将一列添加到我的表的模式中users(因为 MySQL Workbench 通常将其视为外键)。我不希望这种情况发生,我希望能够告诉 MySQL Workbench 使用该列user_type_id作为我的外键。我有什么办法可以做到吗?

谢谢

注意:当我在 MySQL Workbench 的模型视图上双击一个表时,有一个外键选项卡,但是当我这样做时,我得到以下文本:

注意:只能为某些存储引擎(如 InnoDB)定义外键。服务器接受其他存储引擎的外键定义,但默默地忽略它们。将您的表引擎切换到支持外键的引擎,以便在此处进行调整。

4

2 回答 2

2

您可以暂时切换到 InnoDB,定义关系并切换回 MyISAM。关系将保持不变。但是,除了记录您的意图之外,它们没有任何实际用途。

如果这就是你想要的,那就继续吧。

顺便说一句:FK 标签页仅在 Windows 上不可用(对于不支持 FK 的引擎),因为我们已经看到许多用户抱怨为 MyISAM 定义了 FK,只是为了在他们的目标数据库中看到没有效果。在 Linux + OS X 上,无论选择何种存储引擎,您都可以在 FK 上工作。

于 2013-01-25T08:27:26.493 回答
0

如果我正确理解了您的问题,我相信您可以从表本身的外键选项卡中执行此操作。如果您从模型概览中双击一个表,则在底部选项卡上有一个外键选项卡。您可以手动添加外键,但您可以从该对话框中选择。那有意义吗?

于 2013-01-24T20:55:50.527 回答