我的mySQL数据库中有两个表:INVOICE和INVOICE_LINE。两个表都有一个主键列(自动增量)ID。 INVOICE_LINE有一个与INVOICE.ID相关的列INV_ID,即通过将列INVOICE_LINE.INV_ID定义为INVOICE.ID的外键来创建关系。
我将如何为此编写SQL?
答案 0 :(得分:1)
方法1:
在具有INVOICE
行为的这两个表INVOICE_LINE
和ON DELETE CASCADE
之间强制执行外键约束。因此,从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
删除记录1}}表。但LEFT JOIN
确实