MySQL多表安全刪除記錄
直接使用以下程式碼同時從多個表中刪除行可能會導致錯誤:
<code class="language-sql">DELETE FROM `pets` p, `pets_activities` pa WHERE p.`order` > :order AND p.`pet_id` = :pet_id AND pa.`id` = p.`pet_id`</code>
建議的解法是使用JOIN語句:
<code class="language-sql">DELETE p, pa FROM pets p JOIN pets_activities pa ON pa.id = p.pet_id WHERE p.order > :order AND p.pet_id = :pet_id</code>
或者,您可以只刪除pets_activities
表中的記錄,同時引用pets
表:
<code class="language-sql">DELETE pa FROM pets_activities pa JOIN pets p ON pa.id = p.pet_id WHERE p.order > :order AND p.pet_id = :pet_id</code>
這種方法在FROM
子句中使用別名來指定要刪除的表,在處理具有引用完整性的複雜場景時特別有用。
以上是如何安全地從多個 MySQL 表中刪除記錄?的詳細內容。更多資訊請關注PHP中文網其他相關文章!