我正在尝试在Employees表中的字段'fldEmpID'与由fldEmpID和fldEventID组成的外部复合键之间创建关系,但它不允许创建关系。我不明白为什么这种关系不起作用,我能够在事件的fldEventID和复合键之间创建类似的关系。每个表中的fldEmpID字段都是int(11)。我该怎么做才能建立这种关系?
以下是两个表...(我希望将复合键保留在右侧的表中,因为它有助于防止重复并且运行良好)
答案 0 :(得分:1)
它似乎对我有用。我创建了表并使用Designer选项卡创建关系(通过选择“Create relation”图标,然后单击表a中的fldEmpId,最后选择表b中的fldEmpID)。
作为参考,我粘贴在桌子的结构下方(包括钥匙和限制装置)
CREATE TABLE IF NOT EXISTS `a` ( `fldEmpId` int(11) NOT NULL, `fldEmpName` varchar(50) NOT NULL, `fldEmail` varchar(50) NOT NULL, `fldPassHash` varchar(50) NOT NULL, `fldPassSalt` varchar(50) NOT NULL, `fldAdmin` enum('1','2') NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; CREATE TABLE IF NOT EXISTS `b` ( `fldEmpID` int(11) NOT NULL, `fldEventID` bigint(20) unsigned NOT NULL, `fldDTAdded` datetime NOT NULL, `fldDTRemoved` datetime NOT NULL, `fldPosition` enum('0','1','2','3','4','5') NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1; ALTER TABLE `a` ADD PRIMARY KEY (`fldEmpId`); ALTER TABLE `b` ADD PRIMARY KEY (`fldEmpID`), ADD UNIQUE KEY `fldEventID` (`fldEventID`); ALTER TABLE `a` MODIFY `fldEmpId` int(11) NOT NULL AUTO_INCREMENT; ALTER TABLE `b` ADD CONSTRAINT `fk` FOREIGN KEY (`fldEmpID`) REFERENCES `a` (`fldEmpId`);