2010-09-14 71 views
8

有沒有一種方法可以檢查一行是否可能被刪除?例如,它目前不通過受限外鍵連接到其他任何東西。檢查一行是否可以在MySQL中刪除

原因:我正在製作一個管理頁面,列出系統中的所有用戶。他們總是可以被禁用,但他們也可能被刪除。但是,只有當他們沒有連接到任何關鍵的東西時,他們才能被刪除。我想不必手動檢查它是否可以在數據庫中輕鬆完成。

注意:我不想實際刪除任何用戶。我只想向管理員顯示用戶可能會刪除

+0

嘗試將其刪除。如果db抱怨,那是不可能的。 ;) – BoltBait 2010-09-14 18:41:44

+0

你可以隨時刪除管理員,先刪除連接的東西,然後刪除管理員。 – Bot 2010-09-14 18:44:12

+1

恩,是的,但是它已經被刪除了,可能或不可能是管理員想要的:p我只是想顯示它是否可能。 – Svish 2010-09-14 18:59:30

回答

3

您可以嘗試將其作爲事務的一部分進行刪除,如果成功則回滾該事務。但是,我想直接的後續問題是,爲什麼你首先不知道你是否可以刪除該行?

+1

因爲它可以通過外鍵附加到它的各種限制,我不想手動檢查所有這些因爲他們可能會改變,如果我以後添加或刪除表。 – Svish 2012-09-12 09:25:35

+0

然後,您在業務邏輯中失敗了。這種類型的驗證應該在您的業務層完成,該業務層將執行必要的查詢以確保用戶未連接任何內容。 – GrandmasterB 2012-09-12 18:53:40

+2

認爲數據完整性和這種檢查是外鍵限制的作用? – Svish 2012-09-12 21:11:30

1

您可以使用視圖來總結依賴關係的數量,而不必擔心存儲數據&使其保持最新狀態。當依賴關係的數量爲零時,請在UI中使用刪除選項...

0

您可以通過左連接到它們連接的表來獲取所有孤行行,例如,這會給你所有沒有任何工作的用戶ID。

SELECT u.id FROM users u LEFT JOIN jobs j on u.id=j.user_id WHERE j.user_id is null; 
相關問題