Как включить ограничение на удаление в SQLite?


Используя PHP, у меня есть простая база данных, которая может хранить несколько элементов с одинаковым содержимым. Я хочу удалить первое вхождение экземпляра, когда я использую DELETE.

Как включить ограничение на удаление в SQLite с помощью PHP?

4 7

4 ответа:

Вы не можете включить эти опции из PHP, вам нужно скомпилировать SQLite самостоятельно, чтобы включить эти опции. Важно отметить, что вам нужно загрузить полную версию , а не исходный релиз amalgamation из SQLite download page.

Если вы работаете в Unix, возьмите sqlite-3.6.20.tar.gz tarball и загрузите его. Затем:

tar xzf sqlite-3.6.20.tar.gz
cd sqlite-3.6.20
export CFLAGS='-DSQLITE_ENABLE_UPDATE_DELETE_LIMIT=1'
./configure
make

Тогда у вас будет утилита командной строки sqlite3 и файлы библиотеки в подкаталоге .libs.

Вы можете использовать limit с select, а также комбинировать select и delete, как:

DELETE FROM Foo
WHERE someColumn in
(
  SELECT someColumn FROM FOO WHERE SomeCondition LIMIT 200
)
DELETE FROM table WHERE rowid = (SELECT rowid FROM table WHERE condition LIMIT 1 )

Из здесь, Похоже, что вы должны скомпилировать исходный код SQLite, используя

#define SQLITE_ENABLE_UPDATE_DELETE_LIMIT

Для того, чтобы включить его.