簡體   English   中英

結合使用DELETE和INNER JOIN

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM