在更新语句-sqlite中启用限制

时间:2016-08-19 07:47:27

标签: sqlite

我有sqlite的问题,因为我需要在UPDATE语句中使用LIMIT。 我使用以下命令编译了sqlite:

wget http://sqlite.org/2016/sqlite-autoconf-3140100.tar.gz 
tar zxf sqlite-autoconf-3140100.tar.gz 
cd sqlite-autoconf-3140100 
./configure --prefix=/usr --disable-static CFLAGS="-g -O2 -DSQLITE_ENABLE_UPDATE_DELETE_LIMIT=1"
make
make install

当我检查是否使用了编译选项时结果为1,但是当我执行带限制的更新语句时,我收到了错误

sqlite>  select sqlite_compileoption_used('SQLITE_ENABLE_UPDATE_DELETE_LIMIT');
1
sqlite> UPDATE table_name SET modified_at = date('now') WHERE id = 11 LIMIT 1;
Error: near "LIMIT": syntax error

我错过了什么吗?我找不到解决方案。 每个答案都表示赞赏。

我在docker容器上编译sqlite FROM php:5.6-apache

2 个答案:

答案 0 :(得分:0)

documentation说:

  

如果定义了此选项,则在使用“lemon”工具生成parse.c文件时也必须定义它。因此,只有在从源构建库而不是从合并构建库时才能使用此选项。

所以你必须build your own amalgamation

答案 1 :(得分:0)

如果有人以这种方式遇到同样的问题我编译了sqlite

wget https://www.sqlite.org/2016/sqlite-src-3140100.zip 
unzip sqlite-src-3140100.zip && cd sqlite-src-3140100 
./configure --prefix=/usr --disable-static CFLAGS="-g -O2 -DSQLITE_ENABLE_UPDATE_DELETE_LIMIT=1" 
make sqlite3.c 
make install