2012-09-13 3 views
1

Il y a une question similare here mais il n'a pas aidéIndésirable supprimer dans un grand nombre à plusieurs dans les MySql

J'ai un classique plusieurs à plusieurs entre Organisme | Organisme_groupe | Groupe. Je souhaite conserver Organisme lors de la suppression de Groupe et vice versa. En fait, si je supprime Organisme, le Groupe ci-joint est également supprimé.

Je suis un peu confus, parce que d'après ce que je comprends, l'action en cascade ne irait pas plus loin que la table enfant (qui est la table intermédiaire ici).

organization

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 ; 

Les contraintes

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

Voulez-vous dire: Quand supprimer 'organisme', supprimer' organisme_groupe', mais garder 'groupe' . Lorsque vous supprimez 'groupe', supprimez' organisme_groupe', mais gardez 'organisme'. – mikespook

+0

Oui c'est correct – outellou

+0

Votre compréhension est correcte. La définition de votre schéma est correcte. Cela devrait fonctionner comme vous l'avez indiqué, identique à la situation dans la question à laquelle vous avez lié. Pouvez-vous nous montrer la requête supprimant un Organisme qui supprime également certains Groupes? – aib

Répondre

0

MySql mapping était coorect, le problème était que j'ajoutais l'annotation en cascade dans le modèle Hibernate qui semble surcharger les contraintes MySQL

Questions connexes