Posez votre question Signaler

Mysql DELETE CASCADE [Résolu]

developper55 119Messages postés 28 décembre 2007Date d'inscription 28 février 2010Dernière intervention - Dernière réponse le 22 sept. 2010 à 17:00
Bonjour,
j'ai deux tables : users et upload , dont la deuxieme peut contenir un ou plusieurs lignes (fichier) d'un utilisateurs de la table 'users'
j'ai utilisé http://dev.mysql.com/doc/refman/5.0/en/innodb-foreign-key-constraints.html pour créer le Forgein Key ,
mais si vous regardez ci-dessous la différence de la table upload avant et après la création
mon souci est que:
ex: DELETE FROM users WHERE index_users='10'
elle supprime seulement la ligne qui correspond à cet index dans la table "users" et le contenu de la table upload reste
Que pensez vous ?
j'utilise : phpMyAdmin SQL Dump version 2.9.1.1
Merci
------- table users
CREATE TABLE `users` (
`index_users` int(8) NOT NULL auto_increment,
`nom` varchar(32) default NULL,
`prenom` varchar(32) default NULL,
`username` varchar(30) default NULL,
`password` varchar(32) default NULL,
PRIMARY KEY (`index_users`),
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=524 ;
---------- table upload lors de la création
CREATE TABLE `upload` (
`index_upload` int(11) NOT NULL auto_increment,
`index_users` int(11) default NULL,
`name` longtext NOT NULL,
`file` mediumblob NOT NULL,
PRIMARY KEY (`index_upload`),
FOREIGN KEY (index_users) REFERENCES users(index_users)
ON DELETE CASCADE
}
---------- table upload après le dump de la base
CREATE TABLE `upload` (
`index_upload` int(11) NOT NULL auto_increment,
`index_users` int(11) default NULL,
`name` longtext NOT NULL,
`file` mediumblob NOT NULL,
PRIMARY KEY (`index_upload`),
KEY `index_users` (`index_users`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=34 ;
Lire la suite 

Mysql DELETE CASCADE »

5 réponses
Réponse
+1
moins plus
Je pense que tu ne liras jamais cette réponse mais pour d'autres éventuellement. Il faut spécifier engine = innodb si tu veux que ta FK soit effective (MyISAM ne gère pas les FK...). D'autres part un delete ne peut agir que sur une seule table à ma connaissance. C'est le CASCADE qui se charge de supprimer les lignes filles.
Ajouter un commentaire
Réponse
-1
moins plus
j'ai ce message, 1064 - Erreur de syntaxe près de 'WHERE index_users='10'' à la ligne 1

à mon avis , il faut supprimer dans chaque table séparemment
si ce le cas , je ne voie plus l'importance du Forgein key !!!
Ajouter un commentaire
Réponse
-1
moins plus
Vas voir ce lien:

http://dev.mysql.com/doc/refman/5.0/fr/delete.html
Ajouter un commentaire
Réponse
-1
moins plus
merci
Ajouter un commentaire
Réponse
-3
moins plus
Bonjour,

As tu essayé:

DELETE FROM users,upload  WHERE index_users='10' 
Ajouter un commentaire
Ce document intitulé « mysql DELETE CASCADE » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?