📅  最后修改于: 2021-01-04 05:03:16             🧑  作者: Mango
SQLite PRAGMA命令是一种特殊命令,用于控制SQLite环境中的各种环境变量和状态标志。可以读取PRAGMA值,也可以根据要求进行设置。
要查询当前的PRAGMA值,只需提供编译指示的名称。
PRAGMA pragma_name;
要为PRAGMA设置新值,请使用以下语法。
PRAGMA pragma_name = value;
设置模式可以是名称,也可以是等效的整数,但是返回的值始终是整数。
auto_vacuum编译指示获取或设置自动真空模式。以下是简单的语法。
PRAGMA [database.]auto_vacuum;
PRAGMA [database.]auto_vacuum = mode;
其中模式可以是以下任何一种-
Sr.No. | Pragma Value & Description |
---|---|
1 |
0 or NONE Auto-vacuum is disabled. This is the default mode which means that a database file will never shrink in size unless it is manually vacuumed using the VACUUM command. |
2 |
1 or FULL Auto-vacuum is enabled and fully automatic which allows a database file to shrink as data is removed from the database. |
3 |
2 or INCREMENTAL Auto-vacuum is enabled but must be manually activated. In this mode the reference data is maintained, but free pages are simply put on the free list. These pages can be recovered using the incremental_vacuum pragma any time. |
cache_size编译指示可以获取或临时设置内存中页面缓存的最大大小。以下是简单的语法。
PRAGMA [database.]cache_size;
PRAGMA [database.]cache_size = pages;
pages值表示高速缓存中的页面数。内置页面缓存的默认大小为2,000页,最小大小为10页。
case_sensitive_like编译指示控制内置LIKE表达式的区分大小写。默认情况下,此编译指示为false,这意味着内置的LIKE运算符忽略字母大小写。以下是简单的语法。
PRAGMA case_sensitive_like = [true|false];
无法查询此编译指示的当前状态。
count_changes pragma获取或设置数据操作语句(如INSERT,UPDATE和DELETE)的返回值。以下是简单的语法。
PRAGMA count_changes;
PRAGMA count_changes = [true|false];
默认情况下,此编译指示为false,并且这些语句不返回任何内容。如果设置为true,则每个提及的语句将返回一个单列单行表,该表由单个整数值组成,该整数值指示该操作所影响的行。
database_list杂注将用于列出所有附加数据库。以下是简单的语法。
PRAGMA database_list;
该实用程序将返回一个三列的表,每个打开或连接的数据库都有一行,给出数据库序列号,其名称和关联的文件。
编码编译指示控制如何对字符串进行编码和将其存储在数据库文件中。以下是简单的语法。
PRAGMA encoding;
PRAGMA encoding = format;
格式值可以是UTF-8,UTF-16le或UTF-16be之一。
freelist_count编译指示返回一个整数,该整数指示当前有多少个数据库页面被标记为空闲和可用。以下是简单的语法。
PRAGMA [database.]freelist_count;
格式值可以是UTF-8,UTF-16le或UTF-16be之一。
index_info编译指示返回有关数据库索引的信息。以下是简单的语法。
PRAGMA [database.]index_info( index_name );
结果集将为索引中包含的每一列包含一行,以给出列顺序,表中的列索引和列名。
index_list杂注列出与表关联的所有索引。以下是简单的语法。
PRAGMA [database.]index_list( table_name );
结果集将为每个索引包含一行,并提供索引序列,索引名称和指示索引是否唯一的标志。
journal_mode编译指示获取或设置日记模式,该模式控制日记文件的存储和处理方式。以下是简单的语法。
PRAGMA journal_mode;
PRAGMA journal_mode = mode;
PRAGMA database.journal_mode;
PRAGMA database.journal_mode = mode;
下表列出了五种受支持的日记模式。
Sr.No. | Pragma Value & Description |
---|---|
1 |
DELETE This is the default mode. Here at the conclusion of a transaction, the journal file is deleted. |
2 |
TRUNCATE The journal file is truncated to a length of zero bytes. |
3 |
PERSIST The journal file is left in place, but the header is overwritten to indicate the journal is no longer valid. |
4 |
MEMORY The journal record is held in memory, rather than on disk. |
5 |
OFF No journal record is kept. |
max_page_count编译指示获取或设置数据库允许的最大页数。以下是简单的语法。
PRAGMA [database.]max_page_count;
PRAGMA [database.]max_page_count = max_page;
默认值为1,073,741,823,即一千兆页,这意味着,如果默认为1 KB页面大小,则数据库可以增长到一TB。
page_count编译指示返回数据库中当前的页数。以下是简单的语法-
PRAGMA [database.]page_count;
数据库文件的大小应为page_count * page_size。
page_size编译指示获取或设置数据库页面的大小。以下是简单的语法。
PRAGMA [database.]page_size;
PRAGMA [database.]page_size = bytes;
默认情况下,允许的大小为512、1024、2048、4096、8192、16384和32768字节。更改现有数据库上页面大小的唯一方法是设置页面大小,然后立即对数据库进行VACUUM。
parser_trace编译指示控制在分析SQL命令时打印调试状态。以下是简单的语法。
PRAGMA parser_trace = [true|false];
默认情况下,它设置为false,但是当通过将其设置为true启用时,SQL解析器将在解析SQL命令时打印其状态。
recursive_triggers编译指示获取或设置递归触发器功能。如果未启用递归触发器,则触发器操作将不会触发另一个触发器。以下是简单的语法。
PRAGMA recursive_triggers;
PRAGMA recursive_triggers = [true|false];
schema_version编译指示获取或设置存储在数据库头中的架构版本值。以下是简单的语法。
PRAGMA [database.]schema_version;
PRAGMA [database.]schema_version = number;
这是一个32位带符号整数值,用于跟踪架构更改。每当执行更改模式的命令(例如CREATE …或DROP …)时,该值都会增加。
secure_delete杂注用于控制如何从数据库中删除内容。以下是简单的语法。
PRAGMA secure_delete;
PRAGMA secure_delete = [true|false];
PRAGMA database.secure_delete;
PRAGMA database.secure_delete = [true|false];
安全删除标志的默认值通常为off,但是可以使用SQLITE_SECURE_DELETE构建选项更改该默认值。
sql_trace杂注用于将SQL跟踪结果转储到屏幕。以下是简单的语法。
PRAGMA sql_trace;
PRAGMA sql_trace = [true|false];
必须使用SQLITE_DEBUG指令编译SQLite,才能包含此编译指示。
同步实用程序获取或设置当前磁盘同步模式,该模式控制SQLite将数据完全写入物理存储的积极程度。以下是简单的语法。
PRAGMA [database.]synchronous;
PRAGMA [database.]synchronous = mode;
SQLite支持下表中列出的以下同步模式。
Sr.No. | Pragma Value & Description |
---|---|
1 |
0 or OFF No syncs at all |
2 |
1 or NORMAL Sync after each sequence of critical disk operations |
3 |
2 or FULL Sync after each critical disk operation |
temp_store pragma获取或设置临时数据库文件使用的存储模式。以下是简单的语法。
PRAGMA temp_store;
PRAGMA temp_store = mode;
SQLite支持以下存储模式。
Sr.No. | Pragma Value & Description |
---|---|
1 |
0 or DEFAULT Use compile-time default. Normally FILE. |
2 |
1 or FILE Use file-based storage. |
3 |
2 or MEMORY Use memory-based storage. |
temp_store_directory杂注获取或设置用于临时数据库文件的位置。以下是简单的语法。
PRAGMA temp_store_directory;
PRAGMA temp_store_directory = 'directory_path';
user_version编译指示获取或设置存储在数据库头中的用户定义的版本值。以下是简单的语法。
PRAGMA [database.]user_version;
PRAGMA [database.]user_version = number;
这是一个32位带符号整数值,开发人员可以出于版本跟踪目的对其进行设置。
writable_schema编译指示获取或设置修改系统表的功能。以下是简单的语法。
PRAGMA writable_schema;
PRAGMA writable_schema = [true|false];
如果设置了此编译指示,则可以创建和修改以sqlite_开头的表,包括sqlite_master表。使用编译指示时请小心,因为它可能导致数据库完全损坏。