2017-03-13 125 views
0

數據庫表:由於更改而更新數據庫中的現有記錄?

task_assignee

------------------------------ 
| id | task_id | assignee_id | 
------------------------------ 
| 1 | 3 |  2  | 
| 2 | 3 |  5  | 

任務

--------------------------- 
| id | content | category | 
--------------------------- 
| 3 | 'Bake' | 'A' | 

下面是這種情況:

  1. 我創建了一個任務有兩個assig內斯。這相當於該任務的task_assignee中的兩條記錄。我保存任務。
  2. 我想編輯任務並刪除兩個受讓人之一,然後選擇其他人。所以,仍然等於兩個受讓人,其中一個現在不同。

會是什麼使這些更改數據庫的最有效方法是什麼?

我想添加另一列到task_assignee將作爲排序,我會更新的一個標誌。如果受讓人未被選中,我會將其設置爲0,如果選擇了受讓人,則將其設爲0,但我不確定這是否是一件好事,我不認爲這可以覆蓋何時選擇新受託人。 我能想到的是一個繁瑣的循環,將檢查是否選擇該任務的新的受讓人已經在task_assignee,如果它已經連接到該任務,如果不是,那麼它插入一個新的。

我還以爲只是刪除過去的記錄第一然後插入新的,但我不知道這是有效的? - >添加新的受讓人

+0

'UPDATE task_assignee SET assignee_id = newAssigneeID WHERE TASK_ID = 3,assignee_id = 5' – Swellar

+0

@CarlJan是啊,但如果我做了三份受讓人什麼?加上我沒有得到AND部分,因爲那種暗示固定值? – herondale

+0

您可以根據用戶輸入設置動態值,以便您可以知道具有此'assignee_id'的'task_id'是否會更新 – Swellar

回答

0

是不是隻是更簡單地從你想從任務刪除和添加你想要添加一個用戶刪除的記錄中task_assignee。所以你只需要兩個查詢。 刪除並插入。

你應該保持表儘可能保持清潔和自task_assignee表中沒有唯一的ID,你可以刪除你不需要的所有記錄。

如上所述,您還可以執行更新方法。我更喜歡刪除並重新添加它。只是一種習慣的力量。

親切的問候

+0

我擔心這會是一個不好的習慣,但我認爲它會保持桌子乾淨,是的。那麼我會通過它,然後呢?刪除然後插入? – herondale