Mysql DELETE CASCADE [Résolu/Fermé]

Signaler
Messages postés
123
Date d'inscription
vendredi 28 décembre 2007
Statut
Membre
Dernière intervention
30 mai 2012
-
 pseudo -
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é https://dev.mysql.com/doc/refman/8.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 ;

5 réponses

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.
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 63550 internautes nous ont dit merci ce mois-ci

Messages postés
123
Date d'inscription
vendredi 28 décembre 2007
Statut
Membre
Dernière intervention
30 mai 2012
9
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 !!!
Messages postés
123
Date d'inscription
vendredi 28 décembre 2007
Statut
Membre
Dernière intervention
30 mai 2012
9
merci
Messages postés
5358
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
884
Vas voir ce lien:

http://dev.mysql.com/doc/refman/5.0/fr/delete.html
Messages postés
5358
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
884
Bonjour,

As tu essayé:

DELETE FROM users,upload  WHERE index_users='10'