Возможно Android-приложение SQLite ON CONFLICT UPDATE?

Мне нужно решить эту проблему.

Я начал свой проект с неправильной концепции, что ON CONFLICT REPLACE будет обновлять содержимое строки при обнаружении конфликта. Также я думал, что в этой вставке (с конфликтом), если я не помещу значение для столбца, он не заменит, но сохранит старое значение. Вместо этого я только что обнаружил, что ON CONFLICT REPLACE, если он обнаружит конфликт, будет делать вставку delete->, и если он не сможет найти значение для столбца (где я помещаю null для не обновления поля), он заменит значение null Значение со значением столбца по умолчанию, чтобы успешно вставить.

Знаю, что у меня есть эта большая проблема: D

Как вы понимаете, что я хочу достичь, это:

Я всегда делаю вставку, если она найдет уже строку с теми же уникальными ключами (конфликт), она только обновит значения. Если для поля он не найдет значения (я не помещаю их в ContentValues), он не обновит это поле, но сохранит старый (например, обычный запрос на обновление, где вы не поместите столбец для его обновления).

Чтобы решить мою проблему, я решил эти решения:

  • ON CONFLICT UPDATE (это будет работать только в том случае, если у вас есть только одно уникальное поле, если у вас есть 2 или более уникальных поля, которые вызывают конфликт, он будет сбой)
  • UPDATE ON FAIL INSERT, где он всегда пытается сделать обновление. Если он терпит неудачу, потому что он не может найти строку, связанную с записью (она еще не присутствует в db), она попытается сделать вставку

Кто-то уже думал об этой проблеме и имеет решение? Или, может быть, мы просто попытаемся найти решение 🙂

Я думаю, что лучший способ – держать вещи на низком уровне (уровень дБ), чтобы поддерживать хороший уровень производительности.

После официальной документации SQLite3 невозможно автоматически выполнить ОБНОВЛЕНИЕ ОБНОВЛЕНИЯ CONFLICT, но только ЗАМЕНИТЬ, подобную DELETE -> INSERT (новые значения).

Intereting Posts
Установка пакетов на Android SDK, указывающая на странные пакеты Linux Android, когда он включен в onLocationChanged Виджет приложения setImageViewUri не обновляет изображение Начать сервис извещения Как выбрать видео из галереи и обрезать / изменить его размер так же, как обрезка изображения в андроиде Как реализовать расширяемые панели в Android? AutoCompleteTextView с Google Местами, отображаемыми в ListView, как Uber Как реализовать HttpRequestRetryHandler с экспоненциальным откатом? Полноэкранный режим Android VideoView с перекрывающимися элементами панели навигации Должен ли я использовать класс AsyncTask внутри основной деятельности MainActivity? Android – панель действий не отображается с помощью Theme.AppCompat Приложение отключается при выборе режима деблокирования, но в режиме отладки работает отлично Кнопка домашней панели инструментов не работает, если нет меню параметров Как синхронизировать данные между устройствами в Wi-Fi Как использовать параметры доступности для масштабирования шрифтов в WebView?