Возможно 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
Robolectric с test.R.java Eclipse отсутствует сборка C / C ++ и общие свойства проекта Когда я добавляю новое поле, я получаю нулевой указатель Показывать уведомление пользователю в определенное время, но оно появляется каждый раз, когда я закрываю или открываю приложение? Скрыть тон dtmf во время набора номера ObjectAnimator в уровне API <11 Android: проблема с приемлемыми типами файлов через bluetooth HTC One X – Webview становится белым / пустым после касания Измерьте скорость отправки SMS Обновить версию моего приложения Как добиться полноэкранного диалога, как описано в материалах? Как настроить исходное репо для Android при размещении деревьев git в качестве частных репозиториев на github? Android: перемещение в космос после выпуска с помощью libgdx / универсального движка Как я могу использовать listview без расширения ListActivity в моем классе? Почему получение NoSuchFiledException при использовании другого проекта Android в качестве библиотеки?