我有三個表。 產品,公司,員工級聯刪除查詢
產品表的產品編號是公司 和CompanyId foregin重點公司的表是員工
foregin關鍵所以從產品表中刪除產品編號,所有其他表中的相關記錄應刪除。但我無法觸及架構(不能使用alter table)。我應該如何寫在這種情況下,查詢..
我有三個表。 產品,公司,員工級聯刪除查詢
產品表的產品編號是公司 和CompanyId foregin重點公司的表是員工
foregin關鍵所以從產品表中刪除產品編號,所有其他表中的相關記錄應刪除。但我無法觸及架構(不能使用alter table)。我應該如何寫在這種情況下,查詢..
如果您不能添加約束傳播刪除,你必須寫所有必要刪除自己:
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]
您不能將聯接放入刪除語句中 – 2015-03-03 13:48:16
所以我需要寫3個查詢,不能在一個單一的? – Nits 2010-08-27 11:02:54
不是。但是你可以圍繞這3個查詢編寫存儲過程。 – pascal 2010-08-27 11:17:09
我認爲這是一個很好的理由。如果您想要級聯刪除,請使用「ON DELETE CASCADE」選項製作參考約束。但是在某些情況下,你根本就不想要這樣做,因爲刪除方式比預期更多的危險是很大的。例如,您絕對不希望僅僅因爲有人試圖刪除已售出的產品而刪除發票項目。如果DELETE語句中存在「CASCADE」選項,人們會在不知道造成多少損害的情況下使用它。 – 2010-08-27 11:36:34