Я хочу вставить запись, если она не существует, тогда я хочу обновить эту запись, если ее значение COLUMN_GENERATION
меньше, чем значение существующей записи. Я не уверен, как структурировать запрос, или какую команду использовать, даже.Вставка или обновление в SQLite, но только обновление, если одно из значений соответствует условию
установки я моя база данных, как это:
public static final String TABLE_SEARCH = "SearchTable";
public static final String COLUMN_OWNER = "Owner";
public static final String COLUMN_SPOUSE = "Spouse";
public static final String COLUMN_CHILD = "Child";
public static final String COLUMN_GENERATION = "Generations";
private static final String DATABASE_NAME = "searches.db";
private static final int DATABASE_VERSION = 1;
// Database creation sql statement
private static final String DATABASE_CREATE = "CREATE TABLE "
+ TABLE_SEARCH + "("
+ COLUMN_OWNER + " INTEGER PRIMARY KEY, "
+ COLUMN_SPOUSE + " INTEGER DEFAULT 0, "
+ COLUMN_CHILD + " INTEGER DEFAULT 0, "
+ COLUMN_GENERATION
+ " INTEGER DEFAULT 0);";
И это вопрос я "использую в настоящее время, который просто игнорирует противоречивые данные:
values.put(SearchDatabaseHelper.COLUMN_OWNER, personID);
values.put(SearchDatabaseHelper.COLUMN_SPOUSE, spouseID);
values.put(SearchDatabaseHelper.COLUMN_CHILD, childID);
values.put(SearchDatabaseHelper.COLUMN_GENERATION, gens);
long insertID = database.insertWithOnConflict(SearchDatabaseHelper.TABLE_SEARCH, null, values, SQLiteDatabase.CONFLICT_IGNORE);
Я попытался положить запрос только поиск в первую очередь, и вставлять или обновлять по мере необходимости, но это было очень медленным и на самом деле не работало. Я бы очень признателен за помощь в этом.
Wow-- закрыто как дублирующийся вопрос. Нет реальных ответов. Я обеспокоен тем, что я не правильно назвал название своим вопросом, и поэтому люди просто просмотрели его и не читали то, что я просил.
Никто не заметил ключевую фразу в первом абзаце:
«Я хочу, чтобы обновить эту запись, если его значение COLUMN_GENERATION
меньше, чем у существующей записи.»
Я могу вставлять/обновлять базы данных. Основной вопрос заключается в следующем: «Можно ли создать один запрос, который смотрит, существует ли строка в базе данных с моим первичным ключом, а если нет, вставляет и, если это произойдет, то обновляется, только если сохраненный значение одного из столбцов выше, чем введенные данные? "
Я действительно хочу, чтобы иметь возможность сделать это все в рамках одного вызова SQLite, поскольку SQLite намного быстрее, чем сравнение и принятие решений вне SQLite.
также: http://www.sqlite.org/lang_insert.html все это там! – Budius
Определенно не то же самое, что INSERT, если НЕ СУЩЕСТВУЕТ УЛУЧШИТЬ ОБНОВЛЕНИЕ, потому что я хочу только обновить, если новое значение одного столбца меньше существующего значения. – HalR
@Budius Я смотрел документацию и работал над этим в течение нескольких дней. Поэтому диаграммы и диаграммы не работают для меня. – HalR