Premesis:
Я знаю, что лучший способ использовать первичный ключ - это установить поле как целое число (автоинкремент или нет) из-за индексов, но я вособая ситуация ...
У меня есть программа, которая работает в автономном режиме (на ПК и планшете), используя sqlite в качестве базы данных.Пользователь может синхронизировать данные между программой и центральным сервером (например, облаком).Когда пользователь синхронизирует данные, все локальные поля обновления обновляются на сервере и наоборот.
Использование автоинкремента первичного ключа в этой ситуации является плохим решением, поскольку, если два пользователя добавляют поле в таблицу (на двухдругое устройство) У меня будет дублирован первичный ключ ..
Затем я добавил еще одно поле, содержащее идентификатор пользователя, поэтому у меня есть индекс, образованный: USER_ID
и FIELD_ID
таким образом, ситуацияизменить, но все еще могут быть проблемы ...
1) У меня не может быть FIELD_ID как AUTO_INCREMENT 2) Описанная выше проблема все еще остается, если у пользователя Пола есть два устройства с одинаковой версией базы данных (синхронизированов то же время) и в устройстве 1 он выполняет вставку в table_AAA и выполняет другую вставку в table_AAA, но из устройства 2 у меня будет дубликат индекса (USER_ID / FIELD_ID)
Поэтому я преобразовалFIELD_ID как varchar (17), составленный из YYYYMMDDHHMMSSmmm, этот способ довольно невозможен, если пользователь выполняет две операции в одну и ту же миллисекунду..
Вопрос:
Есть ли лучший способ установить первичный ключ в моей ситуации ???