如何在SQLite中启用删除限制?

如何在SQLite中启用删除限制?,sqlite,limit,sql-delete,Sqlite,Limit,Sql Delete,使用PHP,我有一个简单的数据库,可以存储具有相同内容的多个项目。我想在使用delete时删除实例的第一个匹配项 如何使用PHP在SQLite中启用删除限制?从中,似乎必须使用 #define SQLITE_ENABLE_UPDATE_DELETE_LIMIT 为了启用它。您不能从PHP中启用这些选项,您需要自己编译SQLite才能启用这些选项。重要的是,您需要从下载完整版本,而不是合并源代码版本 如果您在Unix上,请获取sqlite-3.6.20.tar.gz tarball并下载它。然后

使用PHP,我有一个简单的数据库,可以存储具有相同内容的多个项目。我想在使用delete时删除实例的第一个匹配项

如何使用PHP在SQLite中启用删除限制?

从中,似乎必须使用

#define SQLITE_ENABLE_UPDATE_DELETE_LIMIT

为了启用它。

您不能从PHP中启用这些选项,您需要自己编译SQLite才能启用这些选项。重要的是,您需要从下载完整版本,而不是合并源代码版本

如果您在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
)

哎呀,我应该注意到我是用php做的。我知道你没有这么做,但为什么我的问题被锁定了?我发现它不起作用,我使用的版本是3.7.6.2。还有其他想法吗?现在您可以将-enable update limit选项传递到./configure,而不必触摸cflags。当然,在单独的项目中使用创建的sqlite3.c合并时,仍然必须定义SQLITE\u ENABLE\u UPDATE\u DELETE\u LIMIT,或者:从表中删除,其中rowid在SELECT rowid FROM表中,条件限制金额_rows@LionKing没有使用在没有工作,工作只与=聪明的伎俩。还有一件事:对某些列使用PK列更安全。实际上不一样。匹配的行数可能超过200行。对于我来说,直到我将中替换为=,它才起作用。
DELETE FROM table WHERE rowid = (SELECT rowid FROM table WHERE condition LIMIT 1 )