Russian Qt Forum

Qt => Базы данных => Тема начата: alexman от Ноябрь 24, 2012, 10:56



Название: Пересобрать драйвер sqlite с ключом SQLITE_ENABLE_UPDATE_DELETE_LIMIT.
Отправлено: alexman от Ноябрь 24, 2012, 10:56
Необходима поддержка запроса UPDATE с ключом LIMIT. Согласно документации http://www.sqlite.org/lang_update.html (http://www.sqlite.org/lang_update.html) необходимо собрать драйвер с ключом SQLITE_ENABLE_UPDATE_DELETE_LIMIT.

Что делаю: добавляю в начало файла sqlite3.c строчку '#define SQLITE_ENABLE_UPDATE_DELETE_LIMIT 1'.
Запрос 'UPDATE TableName SET Field='123' LIMIT '345', '1'' не парсится. Что не так сделал?

P.S. пожалуйста, не рассказывайте, что можно обойтись без LIMIT.


Название: Re: Пересобрать драйвер sqlite с ключом SQLITE_ENABLE_UPDATE_DELETE_LIMIT.
Отправлено: alexman от Ноябрь 26, 2012, 09:32
В общем так и не удалось собрать драйвер с ключом SQLITE_ENABLE_UPDATE_DELETE_LIMIT :(
Проблему решил следующим образом: изменил запрос на запрос с подзапросом. Все прекрасно работает и ключ не нужен :)
Код:
UPDATE TableName SET Field='123' WHERE ROWID IN (SELECT ROWID FROM TableName LIMIT '345', '1')