手动选择外键列mysql workbench
假设我在MySQL数据库中有一堆MyISAM表。我知道,如果我的表是InnoDB MySQL Workbench,它将自动获取表之间的关系。但是,如果我的表是MyISAM,有没有一种方法可以让我选择在MySQL工作台中使用哪一列作为外键,而不用在我的表模式中添加一列?例如,假设我在一个名为手动选择外键列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
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,就绝对没有办法完成我想做的事情?