创建主键到复合键之间的关系 - phpMyAdmin

时间:2014-01-24 20:06:37

标签: sql phpmyadmin relational-database

我正在尝试在Employees表中的字段'fldEmpID'与由fldEmpID和fldEventID组成的外部复合键之间创建关系,但它不允许创建关系。我不明白为什么这种关系不起作用,我能够在事件的fldEventID和复合键之间创建类似的关系。每个表中的fldEmpID字段都是int(11)。我该怎么做才能建立这种关系?

以下是两个表...(我希望将复合键保留在右侧的表中,因为它有助于防止重复并且运行良好)

enter image description here

1 个答案:

答案 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`);