SQLite-プラグマ

SQLite PRAGMAcommandは、SQLite環境内のさまざまな環境変数と状態フラグを制御するために使用される特別なコマンドです。PRAGMA値を読み取ることができ、要件に基づいて設定することもできます。

構文

現在のプラグマ値を照会するには、プラグマの名前を指定するだけです。

PRAGMA pragma_name;

PRAGMAに新しい値を設定するには、次の構文を使用します。

PRAGMA pragma_name = value;

設定モードは名前または同等の整数のいずれかですが、戻り値は常に整数になります。

auto_vacuumプラグマ

ザ・ auto_vacuumプラグマは、自動バキュームモードを取得または設定します。以下は簡単な構文です。

PRAGMA [database.]auto_vacuum;
PRAGMA [database.]auto_vacuum = mode;

どこ mode 次のいずれかになります-

シニア番号 プラグマの値と説明
1

0 or NONE

自動バキュームは無効になっています。これはデフォルトのモードです。つまり、VACUUMコマンドを使用して手動でバキュームしない限り、データベースファイルのサイズが縮小することはありません。

2

1 or FULL

自動バキュームが有効になっており、完全に自動化されているため、データベースからデータが削除されるとデータベースファイルを縮小できます。

3

2 or INCREMENTAL

自動バキュームは有効になっていますが、手動でアクティブにする必要があります。このモードでは、参照データは維持されますが、空きページは単に空きリストに追加されます。これらのページは、incremental_vacuum pragma どんなときも。

cache_sizeプラグマ

ザ・ cache_sizeプラグマは、メモリ内ページキャッシュの最大サイズを取得または一時的に設定できます。以下は簡単な構文です。

PRAGMA [database.]cache_size;
PRAGMA [database.]cache_size = pages;

ザ・ pagesvalueは、キャッシュ内のページ数を表します。組み込みのページキャッシュのデフォルトサイズは2,000ページで、最小サイズは10ページです。

case_sensitive_likeプラグマ

ザ・ case_sensitive_likeプラグマは、組み込みのLIKE式の大文字と小文字の区別を制御します。デフォルトでは、このプラグマはfalseです。これは、組み込みのLIKE演算子が大文字と小文字を無視することを意味します。以下は簡単な構文です。

PRAGMA case_sensitive_like = [true|false];

このプラグマの現在の状態を照会する方法はありません。

count_changesプラグマ

count_changesプラグマは、INSERT、UPDATE、DELETEなどのデータ操作ステートメントの戻り値を取得または設定します。以下は簡単な構文です。

PRAGMA count_changes;
PRAGMA count_changes = [true|false];

デフォルトでは、このプラグマはfalseであり、これらのステートメントは何も返しません。trueに設定すると、前述の各ステートメントは、操作によって影響を受ける行を示す単一の整数値で構成される1列1行のテーブルを返します。

database_listプラグマ

ザ・ database_listプラグマは、接続されているすべてのデータベースを一覧表示するために使用されます。以下は簡単な構文です。

PRAGMA database_list;

このプラグマは、データベースのシーケンス番号、その名前、および関連付けられたファイルを示す、開いているデータベースまたは接続されているデータベースごとに1行の3列のテーブルを返します。

プラグマのエンコード

ザ・ encodingプラグマは、文字列をエンコードしてデータベースファイルに保存する方法を制御します。以下は簡単な構文です。

PRAGMA encoding;
PRAGMA encoding = format;

フォーマット値は次のいずれかになります。 UTF-8, UTF-16le、または UTF-16be

freelist_countプラグマ

ザ・ freelist_countpragmaは、現在空きおよび使用可能としてマークされているデータベースページの数を示す単一の整数を返します。以下は簡単な構文です。

PRAGMA [database.]freelist_count;

フォーマット値は次のいずれかになります。 UTF-8, UTF-16le、または UTF-16be

index_infoプラグマ

ザ・ index_infoプラグマは、データベースインデックスに関する情報を返します。以下は簡単な構文です。

PRAGMA [database.]index_info( index_name );

結果セットには、列シーケンス、テーブル内の列インデックス、および列名を示すインデックスに含まれる列ごとに1つの行が含まれます。

index_listプラグマ

index_listプラグマは、テーブルに関連付けられているすべてのインデックスを一覧表示します。以下は簡単な構文です。

PRAGMA [database.]index_list( table_name );

結果セットには、インデックスごとに1つの行が含まれ、インデックスシーケンス、インデックス名、およびインデックスが一意であるかどうかを示すフラグが示されます。

journal_modeプラグマ

ザ・ journal_modeプラグマは、ジャーナルファイルの保存方法と処理方法を制御するジャーナルモードを取得または設定します。以下は簡単な構文です。

PRAGMA journal_mode;
PRAGMA journal_mode = mode;
PRAGMA database.journal_mode;
PRAGMA database.journal_mode = mode;

次の表に示すように、サポートされているジャーナルモードは5つあります。

シニア番号 プラグマの値と説明
1

DELETE

これがデフォルトのモードです。ここで、トランザクションの終了時に、ジャーナルファイルが削除されます。

2

TRUNCATE

ジャーナルファイルは、ゼロバイトの長さに切り捨てられます。

3

PERSIST

ジャーナルファイルはそのまま残されますが、ヘッダーは上書きされ、ジャーナルが無効になったことを示します。

4

MEMORY

ジャーナルレコードは、ディスクではなくメモリに保持されます。

5

OFF

ジャーナルレコードは保持されません。

max_page_countプラグマ

ザ・ max_page_countプラグマは、データベースで許可される最大ページ数を取得または設定します。以下は簡単な構文です。

PRAGMA [database.]max_page_count;
PRAGMA [database.]max_page_count = max_page;

デフォルト値は1,073,741,823で、これは1ギガページです。つまり、デフォルトの1 KBページサイズの場合、データベースを1テラバイトまで拡張できます。

page_countプラグマ

ザ・ page_countプラグマは、データベース内の現在のページ数を返します。以下は簡単な構文です-

PRAGMA [database.]page_count;

データベースファイルのサイズは、page_count * page_sizeである必要があります。

page_sizeプラグマ

ザ・ page_sizeプラグマは、データベースページのサイズを取得または設定します。以下は簡単な構文です。

PRAGMA [database.]page_size;
PRAGMA [database.]page_size = bytes;

デフォルトでは、許可されるサイズは512、1024、2048、4096、8192、16384、および32768バイトです。既存のデータベースのページサイズを変更する唯一の方法は、ページサイズを設定してから、すぐにデータベースをバキュームすることです。

parser_traceプラグマ

ザ・ parser_tracepragmaは、SQLコマンドを解析するときにデバッグ状態の出力を制御します。以下は簡単な構文です。

PRAGMA parser_trace = [true|false];

デフォルトではfalseに設定されていますが、trueに設定して有効にすると、SQLパーサーはSQLコマンドを解析するときにその状態を出力します。

recursive_triggersプラグマ

ザ・ recursive_triggersプラグマは、再帰トリガー機能を取得または設定します。再帰的トリガーが有効になっていない場合、トリガーアクションは別のトリガーを起動しません。以下は簡単な構文です。

PRAGMA recursive_triggers;
PRAGMA recursive_triggers = [true|false];

schema_versionプラグマ

ザ・ schema_versionプラグマは、データベースヘッダーに格納されているスキーマバージョン値を取得または設定します。以下は簡単な構文です。

PRAGMA [database.]schema_version;
PRAGMA [database.]schema_version = number;

これは、スキーマの変更を追跡する32ビットの符号付き整数値です。スキーマ変更コマンド(CREATE ...やDROP ...など)が実行されるたびに、この値は増分されます。

secure_deleteプラグマ

ザ・ secure_deleteプラグマは、コンテンツをデータベースから削除する方法を制御するために使用されます。以下は簡単な構文です。

PRAGMA secure_delete;
PRAGMA secure_delete = [true|false];
PRAGMA database.secure_delete;
PRAGMA database.secure_delete = [true|false];

セキュア削除フラグのデフォルト値は通常オフですが、これはSQLITE_SECURE_DELETEビルドオプションで変更できます。

sql_traceプラグマ

ザ・ sql_traceプラグマは、SQLトレース結果を画面にダンプするために使用されます。以下は簡単な構文です。

PRAGMA sql_trace;
PRAGMA sql_trace = [true|false];

このプラグマを含めるには、SQLiteをSQLITE_DEBUGディレクティブを使用してコンパイルする必要があります。

同期プラグマ

ザ・ synchronousプラグマは、現在のディスク同期モードを取得または設定します。このモードは、SQLiteが物理ストレージにデータを書き込む速度を制御します。以下は簡単な構文です。

PRAGMA [database.]synchronous;
PRAGMA [database.]synchronous = mode;

SQLiteは、表にリストされている次の同期モードをサポートしています。

シニア番号 プラグマの値と説明
1

0 or OFF

同期がまったくない

2

1 or NORMAL

重要なディスク操作の各シーケンスの後に同期する

3

2 or FULL

重要なディスク操作のたびに同期する

temp_storeプラグマ

ザ・ temp_storeプラグマは、一時データベースファイルによって使用されるストレージモードを取得または設定します。以下は簡単な構文です。

PRAGMA temp_store;
PRAGMA temp_store = mode;

SQLiteは次のストレージモードをサポートしています。

シニア番号 プラグマの値と説明
1

0 or DEFAULT

コンパイル時のデフォルトを使用します。通常はFILE。

2

1 or FILE

ファイルベースのストレージを使用します。

3

2 or MEMORY

メモリベースのストレージを使用します。

temp_store_directoryプラグマ

ザ・ temp_store_directoryプラグマは、一時データベースファイルに使用される場所を取得または設定します。以下は簡単な構文です。

PRAGMA temp_store_directory;
PRAGMA temp_store_directory = 'directory_path';

user_versionプラグマ

ザ・ user_versionpragmaは、データベースヘッダーに格納されているユーザー定義のバージョン値を取得または設定します。以下は簡単な構文です。

PRAGMA [database.]user_version;
PRAGMA [database.]user_version = number;

これは32ビットの符号付き整数値であり、バージョン追跡の目的で開発者が設定できます。

writable_schemaプラグマ

ザ・ writable_schemaプラグマは、システムテーブルを変更する機能を取得または設定します。以下は簡単な構文です。

PRAGMA writable_schema;
PRAGMA writable_schema = [true|false];

このプラグマが設定されている場合、sqlite_masterテーブルを含め、sqlite_で始まるテーブルを作成および変更できます。プラグマを使用するときは、データベースが完全に破損する可能性があるので注意してください。