使用 MyISAM 从多个表中删除

Delete from multiple tables with MyISAM

我已经尝试了很多很多组合,但 none 似乎有效 =(

我有这两个 SQL 命令:

$sql = "DELETE FROM infogt2000_partner_lead_invoice WHERE infogt2000_partner_lead_invoice_lead_id = ".$id_invoice;
$sql = "DELETE FROM infogt2000_partner_lead  WHERE infogt2000_partner_lead_id = ".$id;

而且他们必须执行"together"。那么,如果我从 partner_lead 中删除信息,它也必须从 infogt2000_partner_lead_invoice 中删除相同的信息。 infogt2000_partner_lead_id和infogt2000_partner_lead_invoice_lead_id中的id是一样的,但是我写不对

我目前使用的是MySQL,类型是MyISAM

您应该考虑将数据库 table 转换为 InnoDB,以便您可以创建外键约束以在删除时级联。否则,您必须编写多个查询,从层次结构链中的最低项开始,一直到 parent-most table。例如:删除 grandchildren,然后删除 children,然后删除 parents。

我猜你需要使用内连接:

DELETE infogt2000_partner_lead_invoice, infogt2000_partner_lead
FROM infogt2000_partner_lead_invoice
INNER JOIN infogt2000_partner_lead
WHERE infogt2000_partner_lead_invoice.infogt2000_partner_lead_invoice_lead_id = infogt2000_partner_lead.infogt2000_partner_lead_id
AND infogt2000_partner_lead_invoice_lead_id = $id