[英]Using DELETE with an INNER JOIN
我希望能夠從頁面中刪除公司及其所有用戶。
所以我做了以下事情:
$removeid = $_POST['removeid'];
$deletecompany = "
DELETE c,u
FROM company c
INNER JOIN users u
ON c.id = u.id_company
WHERE c.id = ".$removeid."";
$deletecompanycon = $conn->query($deletecompany);
這僅在公司有用戶的情況下才有效,但是在只有公司且沒有附加用戶的情況下,查詢仍會通過,但不會刪除公司。
即使沒有用戶,如何確保刪除公司?
您可以在users
的外鍵約束中添加ON DELETE CASCADE
選項。 然后,如果公司被DBMS刪除,則該公司的所有用戶都將被刪除。
在CREATE TABLE
語句中看起來與此類似:
CREATE users
(...
FOREIGN KEY (id_company)
REFERENCES company
(id)
ON DELETE CASCADE,
...);
您必須查看如何將其准確地添加到DBMS中的現有約束。 語法在這里可能會有所不同。
嘗試使用LEFT JOIN
$deletecompany = "
DELETE c,u
FROM company c
LEFT JOIN users u
ON c.id = u.id_company
WHERE c.id = ".$removeid."";
$deletecompanycon = $conn->query($deletecompany);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.