概要
Pragma schema_versionにはDB構成が変更された回数が記録されている。
これだけ聞くとバージョン管理に使えそうだが、実はそうでもない。
詳細
DBの構成を変更したときにschema_versionの数字が +1される。 例えば以下のような操作をした時。
- 新規テーブルの作成
- テーブルの変更
- テーブルの削除
他にもビューの編集やトリガーの編集でも +1される。 データの新規挿入、更新、削除などでは変更されない。
注意
schema_versionの値はvacuumコマンドでも変更されてしまう。
これは仕様で対処のしようがないため、vacuumを随時実行しているような場合、
schema_versionをDB構成のバージョンとして扱うのは難しい。
さらに詳しい情報は
公式サイト
を参照のこと。
確認方法
以下のコマンドを実行する。
pragma schema_version;
実行例
実行環境
- Windows 10 64bit
- SQLite3 (3.34.0) Command-Line Shell
sqlite> -- # 1.
sqlite> pragma schema_version;
0
sqlite> -- # 2.
sqlite> create table test (id integer, name text);
sqlite> pragma schema_version;
1
sqlite> alter table test add column email text;
sqlite> pragma schema_version;
2
sqlite> -- # 3.
sqlite> insert into test values (1, 'sample_name', 'sample@example.com');
sqlite> pragma schema_version;
2
sqlite> delete from test;
sqlite> pragma schema_version;
2
sqlite> -- # 4.
sqlite> vacuum;
sqlite> pragma schema_version;
3
- DB新規作成時、schema_versionの値は0
- テーブル作成や変更でschema_versionが増えていく
- データ挿入や削除ではschema_versionは変わらない
- vacuumを実行するとschema_versionが増える
pragma schema_version の値の変更
一応schema_versionの値は自由に変更できる。
pragma schema_version=integer;
しかし、schema_versionを変更した状態でデータを操作すると データが壊れる可能性があるので基本的には変更しない方がいい。
参考URL
-
Pragma schema_version
公式の schema_version に関するドキュメント
https://www.sqlite.org/pragma.html#pragma_schema_version