Как удалить строки из таблицы, используя «LIMIT» - PullRequest
1 голос
/ 23 октября 2011

Я использую FMDB в своем приложении для iPhone (довольно новое для него!) И хочу ограничить количество строк в таблице определенным значением.всякий раз, когда я вставляю новые записи, я хочу проверить, обрабатывается ли какой-нибудь maxNumberOfEntries, и если это так, удалять самые старые записи.Я попробовал следующее:

(...)        
[db beginTransaction];
[db executeUpdate: @"DELETE FROM table_name WHERE someId = ? ORDER BY date LIMIT 10", [NSNumber numberWithInt: 123], nil];
[db commit];
(...)

, но похоже, что sqlite не распознает "LIMIT" -часть запроса.Как мне удается удалить определенное количество строк в таблице, не указав непосредственно запись, которую я хочу удалить?

1 Ответ

1 голос
/ 24 октября 2011

Я не пробовал это, но это может быть связано.

Существует флаг компиляции под названием SQLITE_ENABLE_UPDATE_DELETE_LIMIT, который включает эту функцию:

http://sqlite.org/compile.html#enable%5Fupdate%5Fdelete%5Flimit

Вот соответствующий пост SO:

Как включить LIMIT для DELETE в SQLite?

В связанной записи вы можете использовать delete where id в операторе select и попробовать ограничить в select:

Как удалить данные с определенным номером строки (sqlite)

...