簡體   English   中英

如何創建SQL Delete,它也會刪除相關記錄

[英]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行為的兩個表INVOICEINVOICE_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM