假设我在一个MyISAM数据库中有一堆MySQL表。我知道,如果我的表是InnoDB,MySQL工作台将自动获取表之间的关系。但是,如果我的表是MyISAM,那么是否可以选择在MySQL工作台中使用哪一列作为外键,而无需MySQL工作台在表模式中添加列?例如,假设我在一个名为users的表中有这些列
id PRIMARY KEY
username VARCHAR (255)
password VARCHAR (255)
email VARCHAR (255)
user_type_id INT正如您在上面看到的,user_type_id将是来自名为user_types的表的外键。如果我在users工作台中的表MySQL和user_types之间添加了多对一的关系,那么将自动将列user_types_id添加到表users的架构中(因为MySQL Workbench通常将其视为外键)。我不希望这种情况发生,我希望能够告诉MySQL工作台使用列user_type_id作为我的外键。我有办法做到吗?
谢谢
注意:当我双击MySQL Workbench中的模型视图上的表时,有一个Foreign选项卡,但是当我这样做时,我得到了以下文本:
注意:只能为某些存储引擎(如InnoDB)定义外键。服务器接受其他存储引擎的外键定义,但默认忽略它们。将表引擎切换到支持外键的引擎,以便在这里进行调整。
发布于 2013-01-25 08:27:26
您可以暂时切换到InnoDB,定义关系,然后切换回MyISAM。这种关系将继续存在。但是,除了记录你的意图之外,它们没有什么真正的用处。
如果这就是你想要的,那就去吧。
顺便说一句: FK选项卡页只能在Windows上不可用(对于不支持FKs的引擎),因为我们已经看到许多用户抱怨为MyISAM定义FKs,只是为了在他们的目标DB中看不到效果。在Linux + OS上,您可以使用FKs,而不管所选的存储引擎是什么。
发布于 2013-01-24 20:55:50
如果我正确地理解了您的问题,我相信您可以从表本身的Foreign选项卡中做到这一点。如果双击模型概述中的表,则在底部选项卡上有一个外键选项卡。您可以手动添加外键,但要从该对话框中进行选择。这有意义吗?
https://stackoverflow.com/questions/14510494
复制相似问题