Puis-je supprimer des lignes de 2 tables en une seule instruction SQL?
-
29-09-2019 - |
Question
J'ai 2 tables un appelé "avis" et l'autre "REVIEW_DESCRIPTION"
Si je fais une jointure pour obtenir toutes les données à la fois:
SELECT *
FROM reviews
INNER JOIN reviews_description
ON reviews.reviews_id=reviews_description.reviews_id
WHERE reviews.customers_id = 54183
Sur la base de ce que je voudrais supprimer des lignes dans les deux tables qui correspondent à ces critères en un seul coup, des conseils?
La solution
Oui, MySQL supporte les suppressions de plus d'une table dans une seule déclaration :
Pour la première syntaxe table multiple, les lignes correspondant uniquement dans les tables énumérées avant la clause FROM sont supprimés. Pour la seconde syntaxe table multiple, les lignes correspondantes seulement des tables répertoriées dans la clause FROM (avant la clause USING) sont supprimés. L'effet est que vous pouvez supprimer des lignes de plusieurs tables en même temps et ont des tables supplémentaires qui ne sont utilisés que pour la recherche ...
Premier exemple de syntaxe multi-table:
DELETE reviews, reviews_description
FROM reviews r
JOIN reviews_description rd
WHERE reviews.reviews_id = reviews_description.reviews_id
AND reviews.customers_id = 54183
Autres conseils
Sauf si vous avez on cascade delete
ou une configuration de delete trigger
vous devez utiliser 2 déclarations
serait en cascade l'aide de suppression?