小. 快速. 可靠.
选择任意三个.

SQLite C Interface

Database Connection Configuration Options

#define SQLITE_DBCONFIG_MAINDBNAME            1000 /* const char* */
#define SQLITE_DBCONFIG_LOOKASIDE             1001 /* void* int int */
#define SQLITE_DBCONFIG_ENABLE_FKEY           1002 /* int int* */
#define SQLITE_DBCONFIG_ENABLE_TRIGGER        1003 /* int int* */
#define SQLITE_DBCONFIG_ENABLE_FTS3_TOKENIZER 1004 /* int int* */
#define SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION 1005 /* int int* */
#define SQLITE_DBCONFIG_NO_CKPT_ON_CLOSE      1006 /* int int* */
#define SQLITE_DBCONFIG_ENABLE_QPSG           1007 /* int int* */
#define SQLITE_DBCONFIG_TRIGGER_EQP           1008 /* int int* */
#define SQLITE_DBCONFIG_RESET_DATABASE        1009 /* int int* */
#define SQLITE_DBCONFIG_DEFENSIVE             1010 /* int int* */
#define SQLITE_DBCONFIG_WRITABLE_SCHEMA       1011 /* int int* */
#define SQLITE_DBCONFIG_LEGACY_ALTER_TABLE    1012 /* int int* */
#define SQLITE_DBCONFIG_DQS_DML               1013 /* int int* */
#define SQLITE_DBCONFIG_DQS_DDL               1014 /* int int* */
#define SQLITE_DBCONFIG_ENABLE_VIEW           1015 /* int int* */
#define SQLITE_DBCONFIG_LEGACY_FILE_FORMAT    1016 /* int int* */
#define SQLITE_DBCONFIG_TRUSTED_SCHEMA        1017 /* int int* */
#define SQLITE_DBCONFIG_MAX                   1017 /* Largest DBCONFIG */

These constants are the available integer configuration options that can be passed as the second argument to the sqlite3_db_config() interface.

将来的SQLite版本中可能会添加新的配置选项. 现有的配置选项可能会中断. 应用程序应该检查来自sqlite3_db_config()的返回码,以确保调用能够正常进行. 如果调用了已停用或不受支持的配置选项,则sqlite3_db_config()接口将返回非零错误代码 .

SQLITE_DBCONFIG_LOOKASIDE
此选项采用三个附加参数来确定数据库连接后备内存分配器配置. 第一个参数( sqlite3_db_config()的第三个参数是指向用于后备内存的内存缓冲区的指针.SQLITE_DBCONFIG_LOOKASIDE动词后的第一个参数可能为NULL,在这种情况下,SQLite将使用sqlite3_malloc()分配后备缓冲区本身.第二个参数是每个后备缓冲区的大小;第三个参数是插槽的数量;第一个参数中的缓冲区大小必须大于或等于第二个和第三个参数的乘积;缓冲区必须对齐设置为8字节边界如果SQLITE_DBCONFIG_LOOKASIDE的第二个参数不是8的倍数,则在内部将其舍入为8的下一个较小的倍数.仅当数据库连接未处于连接状态时,才可以更改数据库连接的后备内存配置当前正在使用后备存储器,或者换句话说,当sqlite3_db_status (D, SQLITE_CONFIG_LOOKASIDE ,...)返回的"当前值"为零时,任何更改后备的尝试 使用后备内存时的内存配置将使配置保持不变,并返回SQLITE_BUSY .

SQLITE_DBCONFIG_ENABLE_FKEY
此选项用于启用或禁用外键约束的实施 . 应该有两个附加参数. 第一个参数是一个整数,该整数为0以禁用FK强制执行,为正数以启用FK强制执行,为负数以保持FK强制执行不变. 第二个参数是指向整数的指针,在该整数中写入0或1以指示FK强制是在此调用之后关闭还是打开. 第二个参数可以是NULL指针,在这种情况下,不会报告FK强制设置.

SQLITE_DBCONFIG_ENABLE_TRIGGER
此选项用于启用或禁用触发器 . 应该有两个附加参数. 第一个参数是一个整数,其值为0以禁用触发器,为正数以启用触发器,或者为负数以保持设置不变. 第二个参数是指向整数的指针,该整数写入0或1,以指示在此调用之后是禁用还是启用触发器. 第二个参数可以是NULL指针,在这种情况下,不会报告回触发设置.

SQLITE_DBCONFIG_ENABLE_VIEW
此选项用于启用或禁用视图 . 应该有两个附加参数. 第一个参数是一个整数,其值为0表示禁用视图,为正数表示启用视图,为负数表示不更改设置. 第二个参数是指向整数的指针,在该整数中写入0或1以指示在此调用之后是禁用视图还是启用视图. 第二个参数可以是NULL指针,在这种情况下,不会回传视图设置.

SQLITE_DBCONFIG_ENABLE_FTS3_TOKENIZER
此选项用于启用或禁用fts3_tokenizer()函数,该函数是FTS3全文搜索引擎扩展的一部分. 应该有两个附加参数. 第一个参数是一个整数,其值为0以禁用fts3_tokenizer()或为正数以启用fts3_tokenizer()或为负数以保持设置不变. 第二个参数是指向整数的指针,该整数写入0或1以指示在此调用之后是禁用还是启用fts3_tokenizer. 第二个参数可以是NULL指针,在这种情况下不会报告新设置.

SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION
此选项用于独立于load_extension() SQL函数启用或禁用sqlite3_load_extension()接口. sqlite3_enable_load_extension() API启用或禁用C-API sqlite3_load_extension()和SQL函数load_extension() . 应该有两个附加参数. 当此接口的第一个参数为1时,则仅启用C-API,并且SQL功能保持禁用状态. 如果此接口的第一个参数为0,则C-API和SQL函数都将被禁用. 如果第一个参数为-1,则不会更改C-API或SQL函数的状态. 第二个参数是指向整数的指针,该整数写入0或1以指示在此调用之后是禁用还是启用sqlite3_load_extension()接口. 第二个参数可以是NULL指针,在这种情况下不会报告新设置.

SQLITE_DBCONFIG_MAINDBNAME
此选项用于更改"主"数据库模式的名称. 唯一的参数是指向恒定UTF8字符串的指针,该字符串将代替" main"成为新的架构名称. SQLite不会复制新的主模式名称字符串,因此应用程序必须确保传递到此DBCONFIG选项的参数在数据库连接关闭之前保持不变.

SQLITE_DBCONFIG_NO_CKPT_ON_CLOSE
通常,当处于wal模式的数据库被关闭或与数据库句柄分离时,SQLite会检查这是否意味着现在完全没有与数据库的连接. 如果是这样,它将在关闭连接之前执行检查点操作. 此选项可用于替代此行为. 传递给该操作的第一个参数是整数-正数表示禁用关闭检查点,零值表示默认(启用),负数表示设置不变. 第二个参数是指向整数的指针,该整数写入0或1以指示是否关闭了关卡检查点-如果未禁用,则为0,否则为1.

SQLITE_DBCONFIG_ENABLE_QPSG
SQLITE_DBCONFIG_ENABLE_QPSG选项可激活或取消激活查询计划程序稳定性保证 (QPSG). 当QPSG处于活动状态时,单个SQL查询语句将始终使用相同的算法,而不管绑定参数的值如何. QPSG禁用某些查询优化,这些查询优化会查看绑定参数的值,这会使某些查询变慢. 但是,QPSG具有行为更可预测的优势. 在启用QPSG的情况下,SQLite将始终在字段中使用与实验室测试期间相同的查询计划. 此设置的第一个参数是一个整数,该整数为0以禁用QPSG,为正数以启用QPSG,或为负数以保持设置不变. 第二个参数是指向整数的指针,该整数写入0或1以指示在此调用之后是禁用还是启用QPSG.

SQLITE_DBCONFIG_TRIGGER_EQP
默认情况下,EXPLAIN QUERY PLAN命令的输出不包括触发程序执行的任何操作的输出. 此选项用于设置或清除(默认)控制此行为的标志. 传递给此操作的第一个参数是整数-正数表示启用触发器程序的输出,负数表示禁用整数,负数表示不更改设置. 第二个参数是指向整数的指针,向该整数写入0或1以指示是否已禁用触发输出-如果未禁用则为0,否则为1.

SQLITE_DBCONFIG_RESET_DATABASE
设置SQLITE_DBCONFIG_RESET_DATABASE标志,然后运行VACUUM以便将数据库重置回没有模式且没有内容的空数据库. 以下过程甚至适用于严重损坏的数据库文件:
  1. 如果数据库连接是新打开的,请通过准备然后放弃对数据库的查询或调用sqlite3_table_column_metadata()来忽略任何错误,以确保它已读取数据库架构. 仅当应用程序希望在重置后将数据库保持在WAL模式下时,如果应用程序希望将数据库保持在WAL模式下,才需要执行此步骤.
  2. sqlite3_db_config(db,SQLITE_DBCONFIG_RESET_DATABASE,1,0);
  3. sqlite3_exec (db," VACUUM ",0,0,0);
  4. sqlite3_db_config(db,SQLITE_DBCONFIG_RESET_DATABASE,0,0);
由于重置数据库是破坏性且不可逆的,因此该过程需要使用这种晦涩的API和多个步骤来帮助确保它不会偶然发生.

SQLITE_DBCONFIG_DEFENSIVE
SQLITE_DBCONFIG_DEFENSIVE选项激活或禁用数据库连接的"防御"标志. 启用防御标志后,将禁用允许普通SQL故意破坏数据库文件的语言功能. 禁用的功能包括但不限于以下功能:

SQLITE_DBCONFIG_WRITABLE_SCHEMA
The SQLITE_DBCONFIG_WRITABLE_SCHEMA option activates or deactivates the "writable_schema" flag. This has the same effect and is logically equivalent to setting PRAGMA writable_schema=ON or PRAGMA writable_schema=OFF. The first argument to this setting is an integer which is 0 to disable the writable_schema, positive to enable writable_schema, or negative to leave the setting unchanged. The second parameter is a pointer to an integer into which is written 0 or 1 to indicate whether the writable_schema is enabled or disabled following this call.

SQLITE_DBCONFIG_LEGACY_ALTER_TABLE
SQLITE_DBCONFIG_LEGACY_ALTER_TABLE选项激活或停用ALTER TABLE RENAME命令的旧行为,使其行为与3.24.02018-06-04版本之前的行为相同. 有关其他信息,请参见ALTER TABLE RENAME文档上的"兼容性声明". 也可以使用PRAGMA legacy_alter_table语句打开和关闭此功能.

SQLITE_DBCONFIG_DQS_DML
SQLITE_DBCONFIG_DQS_DML选项仅针对DML语句(即DELETE,INSERT,SELECT和UPDATE语句)激活或停用旧的双引号字符串文字错误功能. 此设置的默认值由-DSQLITE_DQS编译时选项确定.

SQLITE_DBCONFIG_DQS_DDL
SQLITE_DBCONFIG_DQS选项激活或停用DDL语句的旧的双引号字符串文字错误功能,例如CREATE TABLE和CREATE INDEX. 此设置的默认值由-DSQLITE_DQS编译时选项确定.

SQLITE_DBCONFIG_TRUSTED_SCHEMA
SQLITE_DBCONFIG_TRUSTED_SCHEMA选项告诉SQLite假定数据库模式( sqlite_master表的内容)不受恶意内容的污染. 禁用SQLITE_DBCONFIG_TRUSTED_SCHEMA选项时,SQLite会采取其他防御措施来保护应用程序免受损害,包括: 为了兼容旧版本,此设置默认为" on",但是建议所有应用程序都将其关闭. 也可以使用PRAGMA Trusted_schema语句控制此设置.

SQLITE_DBCONFIG_LEGACY_FILE_FORMAT
SQLITE_DBCONFIG_LEGACY_FILE_FORMAT选项激活或停用旧文件格式标志. 激活后,此标志使所有新创建的数据库文件的模式格式版本号(在数据库头中偏移量44处找到的4字节整数)为1.这又意味着生成的数据库文件将是可读写的通过任何SQLite版本回3.0.0(2004-06-18). 如果没有此设置,则3.3.0(2006-01-11)之前的SQLite版本通常无法理解新创建的数据库. 写下这些文字后,现在几乎不需要生成与3.0.0版完全兼容的数据库文件,因此此设置几乎没有实际用途,但是提供了此设置,以便SQLite可以继续声明能够生成与3.0.0版兼容的新数据库文件.

请注意,当启用SQLITE_DBCONFIG_LEGACY_FILE_FORMAT设置时, VACUUM命令将在尝试处理具有生成的列和降序索引的表时失败,并显示模糊错误. 由于SQLite 3.3.0和更早版本不支持生成的列或降序索引,因此不将其视为错误.

另请参见对象常量函数的列表 .

by  ICOPY.SITE