Employee と Location の 2 つのテーブルを考えてみましょう。
従業員
EmpId 名前 LocationId xxx XYZ yyy xxx ABC zzz
位置
LocationId 場所 yyyインド xxx米国
EmpId と LocationId は、 type の主キー列ですuniqueidentifier
。Employee テーブルの LocationId は、Location テーブルを参照する外部キーです。また、Location テーブルの location 列に一意の制約があるとします。
ステップ 1: クライアントとサーバー間で同期します。これでデータが更新されました。
ステップ 2: サーバーとクライアントの両方で、値が「フランス」の新しい行をロケーション テーブルに追加します。また、この新しい行を参照して、employee テーブルに新しい行を追加します。
ステップ 3: 同期します。一意の制約に違反しているため、失敗します。'France' 行はクライアントとサーバーの両方に異なる主キーで存在し、同期フレームワークが新しい行を挿入しようとすると、一意の制約によって挿入が妨げられ、同期が失敗します。
競合する行のクライアントの locationid をサーバーの locationid に更新することで、この問題を解決する必要があります。イベントで更新するコードを記述しようとしましたがdbapplychangefailed
、同期フレームワークが競合する行をロックし、アクセスできません。
主キー以外の列に対する一意の制約は私の主な問題であり、その問題の解決策を得ることができれば、このシナリオでそれを実装できます。
お知らせ下さい。前もって感謝します。