2012-09-13 82 views
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; 
+0

您的意思是:刪除'organisme'時,刪除'organisme_groupe',但保留'groupe' 。刪除'groupe'時,刪除'organisme_groupe',但保留'organisme'。 – mikespook

+0

是的,這是正確的 – outellou

+0

你的理解是正確的。您的架構定義是正確的。這應該如您所說的那樣工作,與您所鏈接的問題的情況相同。你可以告訴我們刪除一個Organisme的查詢也在刪除一些Groupes嗎? – aib

回答

0

MySql映射是coorect,問題是我在Hibernate模型中添加了Cascading註釋,似乎覆蓋了MySQL的約束條件