手动选择外键列mysql workbench

时间:2013-01-24 20:50:42

标签: mysql mysql-workbench workbench

假设我在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_types的表的外键。如果我在MySQL Workbench中的表usersuser_types之间添加多对一关系,则列user_types_id将自动添加到我的表users的模式中(因为这是MySQL Workbench通常认为的外键)。我不希望这种情况发生,我希望能够告诉MySQL Workbench使用列user_type_id作为我的外键。我能以任何方式做到这一点吗?

谢谢

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

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

2 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:0)

如果我正确理解你的问题,我相信你可以从表格本身的外键选项卡中做到这一点。如果双击模型概览中的表,则在底部选项卡上有一个“外键”选项卡。您可以手动添加外键,但是您可以从该对话框中进行选择。这有意义吗?