SQLite – 编译指示
SQLite编译指示命令(PRAGMA)是一个特殊的命令是用于控制各种环境变量和状态标志在SQLite的环境。编译指示值可以读取,也可以根据需求设置。
语法:
查询当前的编译指示值,只是提供编译指示的名称:
PRAGMA pragma_name;
为编译指示设置一个新值,您将使用下面的语法:
PRAGMA pragma_name = value;
设置模式可以是名称或整数等价但返回值将永远是一个整数。
auto_vacuum编译指示
auto_vacuum pragma得到或设置auto-vacuum模式。
以下是简单的语法:
PRAGMA [database.]auto_vacuum;
PRAGMA [database.]auto_vacuum = mode;
模式可以是任何以下的一个:
编译指示值 | 描述 |
0 or NONE | Auto-vacuum是禁用的。这是默认模式,意味着数据库文件永远不会缩小规模,除非它是使用真空命令手动真空的。 |
1 or FULL | Auto-vacuum是启用和全自动收缩数据库文件作为数据从数据库中删除。 |
2 or INCREMENTAL | Auto-vacuum但必须启用手动激活。在这种模式下引用数据维护,但空闲页面只是空闲列表。这些页面可以恢复使用incremental_vacuum编译指示。 |
cache_size编译指示
cache_size pragma能或临时设置的最大大小内存页面缓存。
以下是简单的语法:
PRAGMA [database.]cache_size;
PRAGMA [database.]cache_size = pages;
页面的值代表了缓存的页面数量。内置的页面缓存默认大小为2000页和10页的最小大小。
case_sensitive_like编译指示
case_sensitive_like pragma控制内置的大小写敏感性等表情。默认情况下,这个编译指示是假的,这意味着内置运营商忽略字母大小写。
以下是简单的语法:
PRAGMA case_sensitive_like = [true|false];
没有办法查询编译指示当前状态。
count_changes编译指示
count_changes pragma得到或设置返回值等数据操作语句插入、更新和删除。
以下是简单的语法:
PRAGMA count_changes;
PRAGMA count_changes = [true|false];
默认情况下,这个编译指示是假的,这些语句不返回任何值。如果设置为true,提到的每个语句将返回一个单列,one-row表组成的一个整数值表示影响行操作。
database_list编译指示
database_list pragma将用于列表下的所有数据库连接。以下是简单的语法:
PRAGMA database_list;
这个编译指示将返回每打开一行三列的表或附加数据库数据库序列号,其名称和相关文件。
Encoding(编码)编译指示
编码编译指示控制字符串进行编码并存储在一个数据库文件。以下是简单的语法:
PRAGMA encoding;
PRAGMA encoding = format;
格式的值可以是utf - 8,UTF-16le或UTF-16be。
freelist_count编译指示
freelist_count pragma返回一个整数表示目前有多少数据库页面标记为免费的和可用的。
以下是简单的语法:
PRAGMA [database.]freelist_count;
The format value can be one of UTF-8, UTF-16le, or UTF-16be.
index_info编译指示
index_info pragma返回数据库索引信息。以下是简单的语法:
PRAGMA [database.]index_info( index_name );
结果集将包含一行每一列包含在索引列顺序,列索引都会包含表和列名称。
index_list编译指示
index_list编译指示表列出了所有相关的索引。以下是简单的语法:
PRAGMA [database.]index_list( table_name );
每个索引的结果集将包含一行给指数序列,索引名称和标志指示是否指数是独一无二的。
journal_mode 编译指示
journal_mode pragma得到或设置日志模式控制日志文件的存储和处理。以下是简单的语法:
PRAGMA journal_mode;
PRAGMA journal_mode = mode;
PRAGMA database.journal_mode;
PRAGMA database.journal_mode = mode;
有五个支持日记模式:
Pragma Value | 描述 |
DELETE | 这是默认的模式。在事务的结论,日志文件删除。 |
TRUNCATE | 文件截断的零字节长度。 |
PERSIST | 文件保留在原处,但头覆盖显示不再有效。 |
MEMORY | 记录保存在内存中,而不是在磁盘上。 |
OFF | 没有日志记录保存。 |
max_page_count编译指示
max_page_count pragma得到或设置最大允许数据库的页面数。以下是简单的语法:
PRAGMA [database.]max_page_count;
PRAGMA [database.]max_page_count = max_page;
默认值是1073741823这是giga-page这意味着如果默认1 KB页面大小,这允许数据库1 tb成长。
page_count编译指示
page_count pragma返回当前数据库的页面数量。
以下是简单的语法:
PRAGMA [database.]page_count;
据库文件的大小应该page_count *页大小。
页大小编译指示
页大小编译指示得到或设置数据库页面的大小。
以下是简单的语法:
PRAGMA [database.]page_size;
PRAGMA [database.]page_size = bytes;
默认情况下,允许大小是512,1024,2048,4096,8192,16384,16384字节。的唯一途径改变现有数据库的页面大小设置页面大小,然后立即真空数据库。
parser_trace编译指示
parser_trace pragma控制打印调试状态解析SQL命令。
以下是简单的语法:
PRAGMA recursive_triggers;
PRAGMA recursive_triggers = [true|false];
默认设置为false但通过将它设置为true时,SQL解析器解析SQL命令将打印它的状态。
recursive_triggers编译指示
recursive_triggers pragma得到或设置递归触发器功能。如果不启用,递归触发器触发动作不会火另一个触发器。以下是简单的语法:
PRAGMA recursive_triggers;
PRAGMA recursive_triggers = [true|false];
schema_version编译指示
schema_version pragma得到或设置模式版本的值存储在数据库标题。
以下是简单的语法:
PRAGMA [database.]schema_version;
PRAGMA [database.]schema_version = number;
这是一个32位带符号整数价值模式变化的跟踪。每当schema-altering执行命令(比如,创建…或删除…),这个值是递增的。
secure_delete编译指示
secure_delete pragma是用来控制如何从数据库中删除内容。
以下是简单的语法:
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 pragma用于转储SQL跟踪结果到屏幕上。
以下是简单的语法:
PRAGMA sql_trace;
PRAGMA sql_trace = [true|false];
SQLite必须使用SQLITE_DEBUG指令编译这个编译指示包括在内。
Synchronous(同步)编译指示
synchronous(同步编译指示)获取或设置当前磁盘同步模式控制积极SQLite如何写入数据的物理存储。以下是简单的语法:
PRAGMA [database.]synchronous;
PRAGMA [database.]synchronous = mode;
SQLite支持以下同步模式:
Pragma Value | 描述 |
0 or OFF | 没有同步 |
1 or NORMAL | 同步后每个序列的关键的磁盘操作 |
2 or FULL | 同步后,每个磁盘操作的关键 |
temp_store编译指示
temp_store pragma得到或设置临时使用的数据库文件存储模式。
以下是简单的语法:
PRAGMA temp_store;
PRAGMA temp_store = mode;
SQLite支持以下存储模式:
Pragma Value | 描述 |
0 or DEFAULT | 默认编译选项,即文件存储。 |
1 or FILE | 使用基于文件的存储。 |
2 or MEMORY | 使用基于内存的存储。 |
temp_store_directory编译指示
temp_store_directory pragma得到或设置用于临时数据库文件的位置。
以下是简单的语法:
PRAGMA temp_store_directory;
PRAGMA temp_store_directory = 'directory_path';
user_version编译指示
user_version pragma得到或设置用户定义的版本的值存储在数据库标题。
以下是简单的语法:
PRAGMA writable_schema;
PRAGMA writable_schema = [true|false];
这是一个32位带符号整数的值可以由开发人员设置的版本跟踪的目的。
writable_schema编译指示
writable_schema pragma得到或设置修改系统表的能力。
以下是简单的语法:
PRAGMA writable_schema;
PRAGMA writable_schema = [true|false];
如果这个设置编译指示,表开始sqlite_可以创建和修改,包括sqlite_master表。使用编译指示时要小心,因为它可能导致完整的数据库损坏。