我正面临复合外键中的问题。
我已经尝试过示例,并且也尝试过结构更改,但仍然无法成功。我在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;
我想在更改父级时更新所有子行“状态”,也要更新单个子级“状态”行。
请给我建议。谢谢。