刪除 MySQL 中與特定客戶端相關的貼文
問題:
我們的資料庫包含三個表格:clients
、projects
和 posts
。 目標是刪除連結到特定客戶的所有貼文。 以下 SQL 語句無效:
<code class="language-sql">DELETE FROM posts INNER JOIN projects ON projects.project_id = posts.project_id WHERE projects.client_id = :client_id;</code>
posts
表缺少直接的 client_id
外鍵;它只擁有一個 project_id
外鍵。
解:
要消除與屬於特定客戶的項目相關的帖子,DELETE
語句必須明確針對 posts
表。更正後的查詢是:
<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>
替代方案:
更有效的方法是在 ON DELETE CASCADE
和 projects
表之間建立外鍵關係時實現 posts
限制。當相關項目被刪除時,這會自動刪除貼文。 修改後的 SQL 查詢變成:
<code class="language-sql">DELETE FROM projects WHERE client_id = :client_id;</code>
此方法利用 ON DELETE CASCADE
約束同時刪除所有相關貼文。
以上是如何使用 MySQL 連線刪除與特定客戶端相關的貼文?的詳細內容。更多資訊請關注PHP中文網其他相關文章!