Comment effacer des lignes dans plusieurs tables à la fois avec MySQL

Publié le 1 Février 2012

Lors d'une suppression d'information on doit souvent effacer des lignes dans plusieurs tables.

Par exemple dans le cas d'une boutique en ligne si je veux supprimer un client de ma base de données alors je dois supprimer ses coordonnées qui se trouvent dans la table clients mais aussi toutes les informations connexes comme les commandes effectuées, ses préférences, ses alertes, etc

Pour supprimer un client et ses commandes je peux utiliser la requête suivante:

DELETE clients, commandes, contenu_commandes
FROM clients
LEFT JOIN commandes ON (clients.id = commandes.client_id)
LEFT JOIN contenu_commandes ON (commandes.id = contenu_commandes.commande_id)
WHERE clients.id = 4589;

Les tables après le DELETE sont les tables à effacer.

Les tables après le FROM sont tes tables à utiliser pour sélectionner les lignes à effacer. Cette clause peut contenir plus de tables que la précédente. 

C'est technique est assez pratique lorsqu'on utilise MyISAM car il n'y a pas de mécanisme de clé étrangère contrairement à InnoDB.

Rédigé par Bliz

Publié dans #MySQL

Repost 0
Commenter cet article