2014-03-13 76 views
0

我有這個問題。我這下表:刪除外鍵然後刪除記錄並最終設置外鍵返回是一種很好的做法嗎?

 
employeeID - supervisorID - workerType 
1   - 3   - 1 
2   - 3   - 1 
3   - NULL   - 1 

supervisorID實際上是主鍵「僱員」的外交。每個員工都屬於workerType。

現在我想刪除所有workerType=1,所以它會刪除employeeID=1, employeeID=2 & employeeID=3。但是mysql不會允許cos獲得外鍵約束(例如employeeID=3)。

另外,我不想on delete cascade因爲我想拒絕非法刪除(這是唯一的經理可以刪除員工)。如果我允許on delete cascade,那麼我必須建立另一個系統來控制非法刪除,但是這樣會更節能。

我使用舊版本的MySQL 5.0

是很好的做法,刪除外鍵,然後刪除記錄&最後設置的外鍵回來?

那麼如何在不刪除外鍵的情況下刪除workerType=1

+1

檢查此問題http://stackoverflow.com/questions/15501673/how-to-temporarily-disable-a-foreign-key-constraint-in-mysql – Damodaran

+0

嘗試規則。我不知道mysql是否有規則。如果有使用它 – Sathish

回答

1

您可以將FK值設置爲NULL(如果我理解正確,則爲supervisorID列),然後刪除。

+0

主管superVisorID是空的,你沒有看到我在問題中顯示? – Tum

+0

孩子的superVisorID(1和2) – StanislavL

+0

你的意思是改變表「ON DELETE SET NULL」? – Tum