手动选择外键列mysql workbench

手动选择外键列mysql workbench,mysql,mysql-workbench,workbench,Mysql,Mysql Workbench,Workbench,假设我在MySQL数据库中有一堆MyISAM表。我知道,如果我的表是InnoDB MySQL Workbench,它将自动获取表之间的关系。但是,如果我的表是MyISAM,有没有一种方法可以让我选择在MySQL工作台中使用哪一列作为外键,而不用在我的表模式中添加一列?例如,假设我在一个名为users的表中有这些列: id PRIMARY KEY username VARCHAR (255) password VARCHAR (255) ema

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

id              PRIMARY KEY
username        VARCHAR (255)
password        VARCHAR (255)
email           VARCHAR (255)
user_type_id    INT
如上所述,
user\u type\u id
将是一个外键,来自名为
user\u types
的表。如果我在MySQL Workbench中的我的表
users
user\u types
之间添加多对一关系,一列
user\u types\u id
将自动添加到我的表
users
的模式中(因为MySQL Workbench通常将其视为外键)。我不希望发生这种情况,我希望能够告诉MySQL Workbench使用列
user\u type\u id
作为我的外键。我能做到吗

多谢各位

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


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

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

您可以暂时切换到InnoDB,定义关系并切换回MyISAM。这种关系将继续存在。但是,除了记录你的意图之外,它们没有任何实际用途

如果这就是你想要的,那就去吧


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

我尝试过,当我单击外键时,我无法调整任何内容,我只是看到一条文本,说明只能为某些存储引擎(如InnoDB)定义外键。我会更新帖子,这样其他人就不会提出同样的建议你为什么要使用MyISAM vs InnoDB?我只是好奇地环顾四周。因为约束没有直接在我的表中定义(因为我使用的是框架,所以我让框架处理表上的外键约束)我对MyISAM了解不多,但在浏览之后,它似乎不支持外键约束:如果这对您有帮助,您可以尝试切换到InnoDB。这样做的SQL在链接中。我知道MyISAM不支持外键约束。因此,如果不将我的表切换到InnoDB,就绝对没有办法完成我想做的事情?