MySQL での JOIN 削除: 関連付けられたデータの削除
リレーショナル データベースでは、通常、プライマリ データと関連データを削除する必要があります。 MySQL では、JOIN ステートメントを使用してカスケード削除を実装できます。
質問:
次のテーブル構造を考えてみましょう:
<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>
顧客を削除する場合、関連するすべてのプロジェクトと投稿をカスケードで削除する必要があります。ただし、次の PHP コードは無効です:
<code class="language-sql">DELETE FROM posts INNER JOIN projects ON projects.project_id = posts.project_id WHERE projects.client_id = :client_id;</code>
解決策:
削除された顧客に関連付けられた投稿を正常に削除するには、投稿テーブルからエントリを削除することを指定する必要があります:
<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>
変更されたコードは、顧客が削除されるとプロジェクトとそれに関連する投稿を削除します。
以上がJOIN を使用して MySQL で関連データをカスケード削除する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。