Обходной путь для предложения DELETE ... LIMIT (SQL) - PullRequest
0 голосов
/ 22 декабря 2011

Я работаю над уровнем абстракции запросов к базе данных, который поддерживает SQLite.

К сожалению, SQLite не поддерживает предложение LIMIT в запросах DELETE (и UPDATE и т. Д.) - за исключением случаев, когда в более поздних версиях компилируется специальный флаг.

Так есть ли какое-нибудь решение, которое я мог бы реализовать, чтобы этот тип запроса все еще мог поддерживаться?

1 Ответ

1 голос
/ 22 декабря 2011

Хотя LIMIT изначально не поддерживается в вашей сборке SQLite, вы можете воспроизвести поведение, реализовав метод, который использует LIMIT select в подзапросе для определения строк, которые будут обновлены или удалены.Вы должны знать, что это приведет к некоторому снижению производительности по сравнению с использованием сборки SQLite с поддержкой LIMIT, но если вам нужна функциональность, это может показаться жизнеспособным вариантом.

Если вы работаете с большим набором данных или обнаруживаете, что снижение производительности из-за такой попытки слишком велико, другим вариантом будет использование выбора LIMIT для заполнения временной таблицы, а затем соединение с этой таблицей какчасть вашего удаления или обновления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...