Maison >base de données >tutoriel mysql >Comment supprimer en cascade les données associées dans MySQL à l'aide de JOIN ?

Comment supprimer en cascade les données associées dans MySQL à l'aide de JOIN ?

Patricia Arquette
Patricia Arquetteoriginal
2025-01-20 16:56:09751parcourir

How to Cascade Delete Associated Data in MySQL Using JOIN?

Suppression JOIN dans MySQL : supprimer les données associées

Dans les bases de données relationnelles, il est généralement nécessaire de supprimer les données maître et les données associées. Dans MySQL, vous pouvez utiliser l'instruction JOIN pour implémenter des suppressions en cascade.

Question :

Considérez la structure de tableau suivante :

<code class="language-sql">CREATE TABLE clients (
   client_id INT(11),
   PRIMARY KEY (client_id)
);
CREATE TABLE projects (
   project_id INT(11) UNSIGNED,
   client_id INT(11) UNSIGNED,
   PRIMARY KEY (project_id)
);
CREATE TABLE posts (
   post_id INT(11) UNSIGNED,
   project_id INT(11) UNSIGNED,
   PRIMARY KEY (post_id)
);</code>

Lors de la suppression d'un client, tous les projets et publications associés doivent être supprimés en cascade. Cependant, le code PHP suivant n'est pas valide :

<code class="language-sql">DELETE
FROM posts
INNER JOIN projects ON projects.project_id = posts.project_id
WHERE projects.client_id = :client_id;</code>

Solution :

Pour réussir à supprimer les publications associées à un client supprimé, vous devez spécifier que vous souhaitez supprimer l'entrée du tableau des publications :

<code class="language-sql">DELETE posts
FROM posts
INNER JOIN projects ON projects.project_id = posts.project_id
WHERE projects.client_id = :client_id;</code>

Le code modifié supprimera le projet et ses publications associées lorsqu'un client est supprimé.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn