আমি যে প্রকল্পে কাজ করছি তার সাথে আমার একই সমস্যা রয়েছে, আমার ক্ষেত্রে সমাধানটি ছিল স্থানীয় টেবিলগুলিতে রিমোট_আইডের অতিরিক্ত নলযোগ্য ক্ষেত্র তৈরি করা। স্থানীয় থেকে দূরবর্তী ডাটাবেসে রেকর্ডগুলি সিঙ্ক্রোনাইজ করার সময় যদি রিমোট_আইডিটি শূন্য থাকে তবে এর অর্থ এই যে এই সারিটি কখনই সিঙ্ক্রোনাইজ করা হয়নি এবং দূরবর্তী সারি আইডির সাথে মিলিয়ে একটি অনন্য আইডি ফিরিয়ে আনতে হবে।
Local Table Remote Table
_id (used locally)
remote_id ------------- id
name ------------- name
ক্লায়েন্ট অ্যাপ্লিকেশনটিতে আমি _id ক্ষেত্রের দ্বারা টেবিলগুলি সংযুক্ত করি, আমি দূরবর্তী অবস্থান থেকে ডেটা আনতে, যোগদান করতে, ইত্যাদি করতে দূরবর্তী আইডি ক্ষেত্রটি ব্যবহার করি ..
স্থানীয়ভাবে উদাহরণ:
Local Client Table Local ClientType Table Local ClientType
_id
remote_id
_id -------------------- client_id
remote_id client_type_id -------------- _id
remote_id
name name name
দূরবর্তী উদাহরণ:
Remote Client Table Remote ClientType Table Remote ClientType
id -------------------- client_id
client_type_id -------------- id
name name name
এই পরিস্থিতিটি এবং কোডটিতে কোনও যৌক্তিক ছাড়াই ডেটা অখণ্ডতা ব্যর্থতার কারণ হতে পারে, কারণ ক্লায়েন্ট_ টাইপ টেবিলটি স্থানীয় বা দূরবর্তী টেবিলের সাথে সত্যিকারের আইডির সাথে মেলে না, স্থানীয় _id ক্ষেত্রটি আপডেট করতে বলছে, এটি প্রভাবিত টেবিলগুলি আপডেট করে স্ক্লাইটে আগের তৈরি ট্রিগারটিকে আগুন ধরিয়ে দেয়।
http://www.sqlite.org/lang_createtrigger.html
1- রিমোট_আইডি সার্ভারে উত্পন্ন হয়
2- ক্লায়েন্টকে একটি সংকেত প্রদান করে
3- ক্লায়েন্ট তার _আইডি ক্ষেত্রটি আপডেট করে এবং একটি ট্রিগার চালিত করে যা স্থানীয় _ID তে যোগদানকারী স্থানীয় টেবিলগুলি আপডেট করে
অবশ্যই আমি সিঙ্ক্রোনাইজেশনগুলিকে সহায়তা করতে এবং সদৃশ সিঙ্কগুলি এড়ানোর জন্য একটি সর্বশেষ_পাদিত ক্ষেত্রও ব্যবহার করি।