我的 mySQL 数据库中有两个表:INVOICE 和 INVOICE_LINE。两个表都有一个主键列(自动增量)ID。 INVOICE_LINE 有一个与 INVOICE.ID 相关的列 INV_ID,即通过将列 INVOICE_LINE.INV_ID 定义为 INVOICE.ID 的外键来创建关系。
我该如何为此编写 SQL?
最佳答案
方法一:
在具有 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 确实如此
关于mysql - 如何创建同时删除相关记录的 SQL 删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40460613/