delete
,update
のときにlimit
/offset
/order by
を使えるようにする。
手順
ダウンロード&展開。
wget https://www.sqlite.org/2019/sqlite-autoconf-3290000.tar.gz tar xf "sqlite-autoconf-3290000.tar.gz" cd sqlite-autoconf-3290000
オプション付与。
./configure \ --enable-readline \ --enable-session \ LIBS="-lz" \ LDFLAGS="`icu-config --ldflags`" \ CFLAGS="`icu-config --cppflags` -DSQLITE_ALLOW_URI_AUTHORITY=1 -DSQLITE_ENABLE_COLUMN_METADATA=1 -DSQLITE_ENABLE_DBSTAT_VTAB=1 -DSQLITE_ENABLE_DESERIALIZE=1 -DSQLITE_ENABLE_GEOPOLY=1 -DSQLITE_ENABLE_ICU=1 -DSQLITE_ENABLE_PREUPDATE_HOOK=1 -DSQLITE_ENABLE_STAT4=1 -DSQLITE_INTROSPECTION_PRAGMAS=1 -DSQLITE_ENABLE_UNLOCK_NOTIFY=1 -DSQLITE_HAVE_ZLIB=1 -DSQLITE_ENABLE_UPDATE_DELETE_LIMIT=1"
ビルド。
make
コンパイルオプションの確認。
./sqlite3 :memory: "pragma compile_options;"
ALLOW_URI_AUTHORITY COMPILER=gcc-6.3.0 20170516 ENABLE_COLUMN_METADATA ENABLE_DBSTAT_VTAB ENABLE_FTS4 ENABLE_FTS5 ENABLE_GEOPOLY ENABLE_ICU ENABLE_JSON1 ENABLE_PREUPDATE_HOOK ENABLE_RTREE ENABLE_SESSION ENABLE_STAT4 ENABLE_STMTVTAB ENABLE_UNLOCK_NOTIFY ENABLE_UPDATE_DELETE_LIMIT THREADSAFE=1
ENABLE_UPDATE_DELETE_LIMIT
があった。OK。
試してみるも失敗
前回と同じエラー……。なぜだ。
delete from order by
3_0.sql
create table T(A integer); insert into T values(0); insert into T values(1); delete from T where A > 1 order by asc; select * from T;
Error: near line 4: near "order": syntax error
delete from limit
3_1.sql
create table T(A integer); insert into T values(0); insert into T values(1); delete from T where A > 1 limit 5; select * from T;
Error: near line 4: near "limit": syntax error
delete from limit offset
3_2.sql
create table T(A integer); insert into T values(0); insert into T values(1); delete from T where A > 1 limit 5 offset 1; select * from T;
Error: near line 4: near "limit": syntax error
対象環境
- Raspbierry pi 3 Model B+
- Raspbian stretch 9.0 2018-11-13
- bash 4.4.12(1)-release
- SQLite 3.29.0
- MeCab 0.996ユーザ辞書
$ uname -a Linux raspberrypi 4.19.42-v7+ #1218 SMP Tue May 14 00:48:17 BST 2019 armv7l GNU/Linux
前回まで
- SQLite3学習 俯瞰まとめ
- SQLite3学習 環境構築まとめ
- SQLite3学習 インタフェースまとめ(C言語、CLI、対話モード、Tcl...)
- SQLite3学習 ドットコマンドまとめ
- SQLite3学習 JSON拡張まとめ
- SQLite3学習 FTSまとめ(ICU, MeCab)
- SQLite3学習 再帰クエリ(WITH RECURSIVE)
- SQLite3学習 R-Treeモジュール
- SQLite3学習 Geopoly(2次元ベクタ画像の生成)
- SQLite3学習 拡張関数(generate_series)
- SQLite3学習 拡張ライブラリ数学関数(extension-functions.c)
- SQLite3学習 謎と名前
- SQL文の分類(DDL,DML,TCL,DCL)
- SQL構文 alter(rename)
- SQL構文 alter(add column)概要
- SQL構文 alter(add column)制約
- SQL構文 alter(add column)sqlite_master変更しても反映されない
- SQL構文 alter(add column)スキーマ再定義(テーブル再作成による定義変更)
- SQL構文 analyze
- SQL構文 attach/detach
- SQLite3構文 begin,end,commit,rollback,savepoint(deferred,immediate,exclusive)
- SQLite3構文 コメント
- SQLite3構文 create/drop
- SQLite3構文 index(create/drop)
- SQLite3構文 table(create/drop)
- SQLite3構文 列制約(default)
- SQLite3構文 列制約(collate)
- SQLite3構文 列制約(primary key)
- SQLite3構文 列制約(primary key)ベストプラクティス
- SQLite3構文 列制約(unique)
- SQLite3構文 列制約(not null)
- SQLite3構文 列制約(check)
- SQLite3構文 列制約(foreign key references)
- SQLite3構文 表制約(primary key, unique, check, foreign key)
- SQLite3でメタデータを取得する方法(DB名(スキーマ名)、テーブル名、列名、制約)
- SQLite3でTEMPの保存先を指定する
- SQLite3構文 delete