在MySql中的多对多关系中不需要的删除

时间:2012-09-13 01:24:51

标签: mysql hibernate many-to-many cascading-deletes

有一个类似的问题here,但没有帮助

我在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;

1 个答案:

答案 0 :(得分:0)

MySql映射是coorect,问题是我在Hibernate模型中添加了Cascading注释,似乎覆盖了MySQL约束