[英]How do I create SQL Delete that will also delete related records
我的mySQL數據庫中有兩個表:INVOICE和INVOICE_LINE。 兩個表都有一個主鍵列(自動遞增)ID。 INVOICE_LINE具有與INVOICE.ID相關的INV_ID列,即,通過將INVOICE_LINE.INV_ID列定義為INVOICE.ID的外鍵來創建關系。
我將如何為此編寫SQL?
方法1:
在具有ON DELETE CASCADE
行為的兩個表INVOICE
和INVOICE_LINE
之間強制執行外鍵約束。 因此,從INVOICE
表中刪除條目將刪除INVOICE_LINE
表中的所有相應記錄。
方法2:
如果這兩個表之間沒有外鍵約束,則需要采用以下查詢:
DELETE inv,inv_line
FROM INVOICE inv
LEFT JOIN INVOICE_LINE inv_line ON inv.ID = inv_line.INV_ID
WHERE inv.ID = ?
注意:
我使用了LEFT JOIN
而不是INNER JOIN
因為如果任何發票在INVOICE_LINE
表中沒有對應的發票行,那么INNER JOIN
不會從INVOICE
表中刪除該記錄。 但是LEFT JOIN
確實
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.