Maison >base de données >tutoriel mysql >Comment supprimer en cascade les données associées dans MySQL à l'aide de 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!