2017-09-06 24 views
-2

我有一個表:刪除指定用戶

| staff_id | leader_id | team_role | importance | 
+   +   +    +   + 
| 1001037 | 1000321 |  HOD  |  1  | 
| 1001037 | 1000322 |  HOD  |  1  | 
| 1001037 | 1001037 | Supervisor |  2  | 
| 1001094 | 1001037 | Checker |  3  | 
| 1001075 | 1001037 | Checker |  3  | 
| 1001096 | 1001075 | Squad Leader |  4  | 
| 1000393 | 1001094 | Squad Leader |  4  | 
| 1000465 | 1001094 | Squad Leader |  4  | 
| 1000585 | 1001075 | Squad Leader |  4  | 
| 1000664 | 1000585 | Team Member |  5  | 
| 1000583 | 1000585 | Team Member |  5  | 
| 1000570 | 1000465 | Team Member |  5  | 
| 1000316 | 1000465 | Team Member |  5  | 

在PHP中它是這樣的:

enter image description here enter image description here

如果我想刪除用戶與staff_id = 1001075我需要刪除所有分配給這個用戶ID的信息。所以這將是ids在1001075leader_id。我能,但我還需要刪除用戶下到樹,以便在那裏leader_id= 1001075是將1000585然後我需要刪除其中leader_id= 1000585

我到底需要staff_id要刪除這些用戶的用戶:

1001075 
1001096 
1000585 
1000664 
1000583 

我該怎麼做?

+2

你有沒有試圖達到這個目標 – RiggsFolly

回答

1

有兩種方法可以做到這一點:

  • 遞歸查詢所有的ID,找出所有的孩子,刪除行一個接一個。看看this回答遞歸查詢id的方法。

  • 運行一個腳本ALTER TABLE,使leader_id一個外鍵,引用同一個表的staff_id,並與ON DELETE CASCADE定義。通過這種方式,當你刪除一個領導一行,它會刪除所有的後續行,例如:

    ALTER TABLE table ADD CONSTRAINT fk_leader_id FOREIGN KEY (leader_id) REFERENCES table(staff_id) ON DELETE CASCADE;

我寧願第二種方法。