モバイルデータベースにローカルデータベースがあります。数分ごとに、デバイスはテーブルを調べ、RESTインターフェースを介して、アップロード済みとしてマークされていないデータをサーバーに送信します。表の例を次に示します。
id | name | phone | uploaded
1 | "bob" | "444" | 0
RESTインターフェースを介して送信されるのは次のとおりです。
name : "bob", phone : "444"
サーバーは次のように応答します。
status : "OK"
この「OK」メッセージがモバイルデバイスによって受信されると、それらのレコードにとしてマークが付けられuploaded=1
ます。これは、デバイスを実際に起こったことと一貫性を保つために正常に機能するはずです。問題は、サーバーがモバイルデバイスからこれらのメッセージのうち2つを(何らかの理由で)受信し、まったく同じデータを持つ2つのレコードをサーバーデータベースに挿入する可能性があることです。
これが発生しないようにする方法は何ですか?
サーバーデータベースのすべてのフィールドの一意性インデックスを考えましたが、もっと良い方法があるはずだと思います。