1
有一个similare问题here但它并没有帮助不良的许多删除一对多的关系在MySQL
我有一个经典的许多人Organisme
之间一对多的关系| Organisme_groupe
| Groupe
。
我想保留Organisme
删除Groupe
反之亦然。 其实如果我删除Organisme,附加的Groupe也会被删除。
我很困惑,因为据我所知,级联动作不会比子表(这里是中间表)更远。
Organisme
CREATE TABLE IF NOT EXISTS `organisme` (
`ORGANISME_ID` int(10) NOT NULL PRIMARY KEY AUTO_INCREMENT,
`TYPE_ORGANISME` varchar(128) NOT NULL DEFAULT '',
`NAME` varchar(80) DEFAULT ''
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
了Groupe
CREATE TABLE IF NOT EXISTS `groupe` (
`GROUPE_ID` int(10) NOT NULL AUTO_INCREMENT PRIMARY KEY,
`NAME_GROUPE` varchar(50) NOT NULL DEFAULT ''
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
Organisme_groupe
CREATE TABLE IF NOT EXISTS `organisme_groupe`(
`ORGANISME_ID` int(10) NOT NULL,
`GROUPE_ID` int(10) NOT NULL,
PRIMARY KEY (ORGANISME_ID, GROUPE_ID)
)ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
约束
ALTER TABLE `organisme_groupe`
ADD CONSTRAINT `FK_organisme_groupe_1` FOREIGN KEY (`ORGANISME_ID`) REFERENCES `organisme` (`ORGANISME_ID`) ON DELETE CASCADE ON UPDATE CASCADE,
ADD CONSTRAINT `FK_organisme_groupe_2` FOREIGN KEY (`GROUPE_ID`) REFERENCES `groupe` (`GROUPE_ID`) ON DELETE CASCADE ON UPDATE CASCADE;
您的意思是:删除'organisme'时,删除'organisme_groupe',但保留'groupe' 。删除'groupe'时,删除'organisme_groupe',但保留'organisme'。 – mikespook
是的,这是正确的 – outellou
你的理解是正确的。您的架构定义是正确的。这应该如您所说的那样工作,与您所链接的问题的情况相同。你可以告诉我们删除一个Organisme的查询也在删除一些Groupes吗? – aib