如何创建也将删除相关记录的SQL删除

时间:2016-11-07 08:18:41

标签: mysql sql

我的mySQL数据库中有两个表:INVOICE和INVOICE_LINE。两个表都有一个主键列(自动增量)ID。 INVOICE_LINE有一个与INVOICE.ID相关的列INV_ID,即通过将列INVOICE_LINE.INV_ID定义为INVOICE.ID的外键来创建关系。

我将如何为此编写SQL?

1 个答案:

答案 0 :(得分:1)

方法1:

在具有INVOICE行为的这两个表INVOICE_LINEON 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确实