【发布时间】:2011-04-04 18:00:49
【问题描述】:
我有三张桌子。 产品、公司、员工
Product 表的ProductId 是Company 的foregin key Company 表的 CompanyId 是 Employee 的外键
所以在从 Product 表中删除 ProductId 时,其他表中的所有相关记录都应该删除。但我不能触及模式(不能使用改变表)。在这种情况下我应该如何编写查询..
【问题讨论】:
我有三张桌子。 产品、公司、员工
Product 表的ProductId 是Company 的foregin key Company 表的 CompanyId 是 Employee 的外键
所以在从 Product 表中删除 ProductId 时,其他表中的所有相关记录都应该删除。但我不能触及模式(不能使用改变表)。在这种情况下我应该如何编写查询..
【问题讨论】:
如果您无法添加传播删除的约束,则必须自己编写所有必要的删除:
delete employee where companyid in (select companyid from company c where productid = xxx);
delete company where productid=xxx;
delete product where productid=xxx;
【讨论】:
试试这个选项。我没有环境来测试这个。我想通过一些更改它应该在你的最后工作。
DELETE Product,Company,Employee
FROM
user LEFT JOIN items ON product.productid = company.productid
LEFT JOIN orders ON company.productid = product.productid
WHERE product.productid = [$productid]
【讨论】: