40 votes

Mysql - supprimer de plusieurs tables avec une seule requête

J'ai 4 tables qui stockent différentes informations sur un utilisateur dans chacune. Chaque table a un champ avec user_id pour identifier quelle ligne appartient à quel utilisateur. Si je veux supprimer l'utilisateur, est-ce la meilleure façon de supprimer ces informations des utilisateurs de plusieurs tables ? Mon objectif est de le faire en une seule requête.

Requête :

"DELETE FROM table1 WHERE user_id='$user_id';
DELETE FROM table2 WHERE user_id='$user_id';
DELETE FROM table3 WHERE user_id='$user_id';
DELETE FROM table4 WHERE user_id='$user_id';";

39voto

Chandu Points 40028

Vous pouvez définir des contraintes de clé étrangère sur les tables avec l'option ON DELETE CASCADE.

Ensuite, la suppression de l'enregistrement de la table parent supprime les enregistrements des tables enfants.

Consultez ce lien : http://dev.mysql.com/doc/refman/5.5/en/innodb-foreign-key-constraints.html

34voto

Rodel Sarate Points 739

Vous pouvez également utiliser la requête suivante :

DELETE FROM Student, Enrollment USING Student INNER JOIN Enrollment ON Student.studentId = Enrollment.studentId WHERE Student.studentId= 51;

8voto

Niraj patel Points 505

à partir de deux tables avec clé étrangère, vous pouvez essayer cette requête :

DELETE T1, T2
FROM T1
INNER JOIN T2 ON T1.key = T2.key
WHERE condition

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X