好的,我理解问题是什么,我理解约束,因为它们需要在db中是唯一的(之前我不知道,所以我学到了一些东西。确定他们目前的用途,但可以稍后学习。我的问题是,我认为一个简单的问题就是不了解MySQL Workbench如何分配约束。显然,你可以在选项中设置它自动执行,我认为我已经设置要做;然而,我做了一些事情,因为他们使用相同的FK,所以我做了很多约束,这里是我的意思的一个例子: 表1:
CONSTRAINT `dish_type`
FOREIGN KEY (`dish_type` )
REFERENCES `acs_operations_dev`.`dish_types` (`id` )
ON DELETE NO ACTION
ON UPDATE CASCADE,
CONSTRAINT `tech_number`
FOREIGN KEY (`tech_number` )
REFERENCES `acs_operations_dev`.`employees` (`tech_number` )
ON DELETE NO ACTION
ON UPDATE CASCADE)
表2
PRIMARY KEY (`id`) ,
INDEX `tech_number` (`tech_number` ASC) ,
INDEX `car` (`car` ASC) ,
INDEX `field_dev_coach` (`field_dev_coach` ASC) ,
UNIQUE INDEX `etad_user_UNIQUE` (`etad_user` ASC) ,
CONSTRAINT `tech_number`
FOREIGN KEY (`tech_number` )
REFERENCES `acs_operations_dev`.`employees` (`tech_number` )
ON DELETE NO ACTION
ON UPDATE CASCADE,
CONSTRAINT `car`
FOREIGN KEY (`car` )
REFERENCES `acs_operations_dev`.`cars` (`id` )
ON DELETE NO ACTION
ON UPDATE CASCADE,
我遗漏了一些部分 - 只是试图表明问题 - 即在tech_number上。
我在模型页面上手动创建了表格(即我没有使用EER“绘图”样式)。当我创建FK时,这就是我所做的:
我在这里做的是什么导致WB不自动分配约束?另外,我该怎么做才能在WB中修复它。
我希望这是有道理的。我在每张桌子上使用这种方法,顺便说一句 - 所以它是全面的。谢谢!
麦克
答案 0 :(得分:1)
检查表格是InnoDB
检查外键的列是否具有相同的数据类型。如果您使用整数列,请检查两者是无符号还是已签名。
检查必须是unqiue的外键名称。我通常使用以下fromat fk_currenttablename_foreignkeytablename