Я использую FMDB для взаимодействия с базой данных SQLite.У меня он вставляет строки нормально, но когда я пытаюсь и ОБНОВИТЬ один из них, ОБНОВЛЕНИЕ не происходит, но не сообщается об ошибке.
Вот что я делаю:
userHistoryDB.logsErrors = YES;
userHistoryDB.traceExecution = YES;
NSString *query = [NSString stringWithFormat:
@"INSERT OR IGNORE INTO phrase_history (code, %@) VALUES (\"%@\", 0); "
@"UPDATE OR FAIL phrase_history SET %@ = %@ + 1 WHERE code = \"%@\";",
countTypeColumn,
phraseCode,
countTypeColumn,
countTypeColumn,
phraseCode];
BOOL rc = [userHistoryDB executeUpdate:query];
rc - ДА, чтобы указать, что ничего не является неправильным.Вот пример вызова:
<FMDatabase: 0x5303af0> executeUpdate: INSERT OR IGNORE INTO phrase_history (code, presented) VALUES ("grapefruit", 0); UPDATE OR FAIL phrase_history SET presented = presented + 1 WHERE code = "grapefruit";
Что касается FMDB, то это выполнено нормально.Однако запись не увеличивается.В SQL нет ничего плохого - если я вставлю его в инструмент командной строки sqlite3, он будет отлично работать.
Есть идеи, почему он не работает?Вещи, которые я пытался безрезультатно:
- Заключение строки в транзакцию
- Запуск с использованием executeQuery
- Запуск только обновления (запись уже вставлена вручную).
- Удар головой о стол.