Mysql DELETE CASCADE

Résolu/Fermé
developper55 Messages postés 123 Date d'inscription vendredi 28 décembre 2007 Statut Membre Dernière intervention 30 mai 2012 - 7 févr. 2008 à 16:26
 pseudo - 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é 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 ;
A voir également:

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