复合外键更新失败

时间:2019-07-19 09:25:45

标签: mysql sql

我正面临复合外键中的问题。

我已经尝试过示例,并且也尝试过结构更改,但仍然无法成功。我在mysql服务器上试过了。

CREATE TABLE `parenttable` (
  `ID` int(11) NOT NULL,
  `status` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `parenttable` (`ID`, `status`) VALUES
(1, 1),
(2, 1),
(3, 1);
ALTER TABLE `parenttable`
  ADD PRIMARY KEY (`ID`),
  ADD KEY `ID` (`ID`,`status`);

ALTER TABLE `parenttable`
  MODIFY `ID` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=4;
COMMIT;


CREATE TABLE `parenttable2` (
  `ID` int(11) NOT NULL,
  `status` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `parenttable2` (`ID`, `status`) VALUES
(1, 1),
(2, 1),
(3, 1);

ALTER TABLE `parenttable2`
  ADD PRIMARY KEY (`ID`),
  ADD KEY `ID` (`ID`,`status`);

ALTER TABLE `parenttable2`
  MODIFY `ID` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=4;
COMMIT;


CREATE TABLE `childtable` (
  `ID` int(11) NOT NULL,
  `parent_id` int(11) NOT NULL,
  `parent_id2` int(11) NOT NULL,
  `status` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


INSERT INTO `childtable` (`ID`, `parent_id`, `parent_id2`, `status`) VALUES
(1, 1, 1, 1),
(3, 1, 1, 1),
(4, 2, 2, 1),
(5, 2, 3, 1),
(6, 1, 1, 1);


ALTER TABLE `childtable`
  ADD PRIMARY KEY (`ID`),
  ADD KEY `fk_childTable_parent_id` (`parent_id`,`status`),
  ADD KEY `fk_childTable_parent_id2` (`parent_id2`,`status`);
ALTER TABLE `childtable`
  MODIFY `ID` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=7;


ALTER TABLE `childtable`
  ADD CONSTRAINT `fk_childTable_parent_id` FOREIGN KEY         
 (`parent_id`,`status`) REFERENCES `parenttable` (`ID`, `status`) ON DELETE     
 CASCADE ON UPDATE CASCADE,
  ADD CONSTRAINT `fk_childTable_parent_id2` FOREIGN KEY 
(`parent_id2`,`status`) REFERENCES `parenttable2` (`ID`, `status`) ON DELETE 
CASCADE ON UPDATE CASCADE;
COMMIT;

我想在更改父级时更新所有子行“状态”,也要更新单个子级“状态”行。

请给我建议。谢谢。

0 个答案:

没有答案