级联删除查询

时间:2010-08-27 10:54:54

标签: sql oracle

我有三张桌子。 产品,公司,员工

Product表的ProductId是公司的foregin密钥 公司表的CompanyId是Employee

的foregin密钥

因此,在从Product表中删除ProductId时,其他表中的所有相关记录都应删除。但我无法触摸架构(不能使用alter table)。在这种情况下我该如何编写查询..

2 个答案:

答案 0 :(得分:9)

如果无法添加传播删除的约束,则必须自己编写所有必要的删除:

delete employee where companyid in (select companyid from company c where productid = xxx);
delete company where productid=xxx;
delete product where productid=xxx;

答案 1 :(得分:0)

尝试此选项。我没有环境来测试这个。我想有一些改变它应该在你的最后工作。

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]