[英]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.