使用MySQL Workbench在已编制索引的列上创建外键
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了使用MySQL Workbench在已编制索引的列上创建外键,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2246字,纯文字阅读大概需要4分钟。
内容图文
我正在使用Workbench创建数据库模型并创建下表:
CREATE TABLE IF NOT EXISTS `Database`.`table1` (
`idtable1` INT NOT NULL ,
`uniquecolumn` INT NOT NULL ,
PRIMARY KEY (`idtable1`) ,
UNIQUE INDEX `UniqueIndex` (`uniquecolumn` ASC) )
ENGINE = InnoDB
它有一个主键,在我的第二列上有一个唯一键.
当我在它们上创建外键约束时,Workbench会自动添加两个索引:
CREATE TABLE IF NOT EXISTS `Database`.`table1` (
`idtable1` INT NOT NULL ,
`uniquecolumn` INT NOT NULL ,
PRIMARY KEY (`idtable1`) ,
UNIQUE INDEX `UniqueIndex` (`uniquecolumn` ASC) ,
INDEX `FKOne` (`idtable1` ASC) , //here
INDEX `FKTwo` (`uniquecolumn` ASC) , //(I don't want this!)
CONSTRAINT `FKOne`
FOREIGN KEY (`idtable1` )
REFERENCES `Database`.`table2` (`idtable2` )
ON DELETE CASCADE
ON UPDATE CASCADE,
CONSTRAINT `FKTwo`
FOREIGN KEY (`uniquecolumn` )
REFERENCES `Database`.`table2` (`idtable2` )
ON DELETE CASCADE
ON UPDATE CASCADE)
ENGINE = InnoDB
(以上是将外键添加到我的模型后的正向设计脚本)
我现在有四个索引.
这就是MySQL参考手册所说的:
In the referencing table, there must be an index where the foreign key
columns are listed as the first columns in the same order. Such an
index is created on the referencing table automatically if it does not
exist.
所以我理解不需要创建索引FKOne和FKTwo,因为在相同的列上已经有相同顺序的主键和唯一索引.然而,MySQL Workbench不允许我删除索引FKOne和FKTwo.我想我应该能够做到这一点:
CREATE TABLE IF NOT EXISTS `Database`.`table1` (
`idtable1` INT NOT NULL ,
`uniquecolumn` INT NOT NULL ,
PRIMARY KEY (`idtable1`) ,
UNIQUE INDEX `UniqueIndex` (`uniquecolumn` ASC) ,
CONSTRAINT `FKOne`
FOREIGN KEY (`idtable1` )
REFERENCES `Database`.`table2` (`idtable2` )
ON DELETE CASCADE
ON UPDATE CASCADE,
CONSTRAINT `FKTwo`
FOREIGN KEY (`uniquecolumn` )
REFERENCES `Database`.`table2` (`idtable2` )
ON DELETE CASCADE
ON UPDATE CASCADE)
ENGINE = InnoDB
我对吗?这段代码有用吗?有没有办法用Workbench做到这一点? (除了在前向工程之前的最后一刻删除这两行).
或者MySQL可能足够智能,不会创建完全冗余的索引,我不必担心它……?
解决方法:
(我假设这是在定义模型时.)
请参阅Bug 53277,其中我提到了以下模糊的解决方法:
您可以从外键及其要删除的相应生成索引开始.确保密钥(至少暂时)在单个非唯一列上.在“索引”选项卡中,将“类型”更改为“UNIQUE”.然后转到Columns选项卡,现在检查UQ,并取消选中它.消除了不需要的索引!
内容总结
以上是互联网集市为您收集整理的使用MySQL Workbench在已编制索引的列上创建外键全部内容,希望文章能够帮你解决使用MySQL Workbench在已编制索引的列上创建外键所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。