我在移動數據庫上有一個本地數據庫。每隔幾分鐘,設備就會查看其表格,並通過REST界面向服務器發送未標記爲已上傳的任何數據。下面是一個例子表:通過REST接口保持數據庫一致性
id | name | phone | uploaded
1 | "bob" | "444" | 0
什麼得到通過REST接口發送的是:
name : "bob", phone : "444"
,服務器會響應:一旦這個 「OK」 的消息是
status : "OK"
由移動設備接收,它會將這些記錄標記爲uploaded=1
。這應該很好地保持設備與實際發生的一致。問題在於服務器可能會從移動設備接收到這些消息中的兩條(無論出於何種原因),並且會將具有完全相同數據的兩條記錄插入到服務器數據庫中。
有什麼方法可以防止發生這種情況?
我想到了服務器數據庫中所有字段的唯一性索引,但我覺得必須有更好的方法。
爲什麼當你只需要一個時發送兩條更新消息?這是你必須解決的問題 –
好吧,任何數量的事情都可能導致意外的「雙重發送」:錯誤的連接,在服務器響應之前意外按下「上傳」兩次。無論如何,你不能放過它。 – you786