2013-02-08 49 views
0

我有一個需要更新記錄,如果它存在,否則插入它。我知道這已被問了幾次,但我認爲我的問題有點棘手。更新記錄,如果存在其他插入

我有一個表(tbl_settings):

setting_id | token | setting_value | setting_for 
1     1   on     background 
2     1   off     vibrate 
3     2   on     vibrate 

這是一個移動應用程序,我將保存在遠程數據庫的用戶設置,以便在需要時以後可以檢索。

Setting_id是唯一的自動增量。

令牌將是該設備令牌ID(用戶專用)

Setting_value是值(開/關),用於那個特定的設置

Setting_for是實際的設置名稱

現在有4個設置選項可供用戶使用,可以在單獨時間(當用戶更改設置開/關時)寫入數據庫,或者如果更好,可以一起寫入數據庫。

因此,如果用戶更改振動設置,我需要一個查詢來檢查振動和令牌是否存在更新該特定記錄,否則插入令牌,setting_value和setting_for。

希望它可能在一個單一的查詢。如果沒有,我只會使用多個查詢,一個用來檢查是否存在,另一個用於插入或更新。

+0

對於這種情況,自動遞增鍵似乎是一個非常糟糕的主意。基於標記和setting_for的組合鍵似乎是一個更好的主意。 –

回答

0

MySQL提供該兩種選擇:

請注意,在這兩種情況下,你必須放下你的setting_id(這似乎毫無意義反正)和使用一個複合主鍵。

+0

謝謝你。我甚至不知道組合鍵是否存在或者他們是如何工作的。 – puks1978

相關問題