Database Connection Configuration Options
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* */
这些常量是可用的整数配置选项,可以作为第二个参数传递给sqlite3_db_config()接口。
新的配置选项可能会在未来的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_FTS3_TOKENIZER此选项用于启用或禁用作为FTS3全文本搜索引擎扩展的一部分的fts3_tokenizer()函数的双参数版本。应该有两个额外的参数。第一个参数是一个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此选项用于更改“ 第二个参数是一个指向写入0或1的整数的指针,用于指示checkpoint-on-close是否被禁用 - 如果它们未被禁用则为0,如果它们为1则指示为1。SQLITE_DBCONFIG_ENABLE_QPSG SQLITE_DBCONFIG_ENABLE_QPSG选项激活或取消激活查询计划程序稳定性保证(QPSG)。当QPSG处于活动状态时,单个SQL查询语句将始终使用相同的算法,而不管绑定参数的值如何。QPSG禁用某些查询优化,查看绑定参数的值,这可以使某些查询更慢。但QPSG具有更可预测行为的优势。在QPSG处于活动状态时,SQLite将始终在该字段中使用与实验室测试期间使用的查询计划相同的查询计划。SQLITE_DBCONFIG_ENABLE_QPSG SQLITE_DBCONFIG_ENABLE_QPSG选项激活或取消激活查询计划程序稳定性保证(QPSG)。当QPSG处于活动状态时,单个SQL查询语句将始终使用相同的算法,而不管绑定参数的值如何。QPSG禁用某些查询优化,查看绑定参数的值,这可以使某些查询更慢。但QPSG具有更可预测行为的优势。在QPSG处于活动状态时,SQLite将始终在该字段中使用与实验室测试期间使用的查询计划相同的查询计划。SQLITE_DBCONFIG_ENABLE_QPSG SQLITE_DBCONFIG_ENABLE_QPSG选项激活或取消激活查询计划程序稳定性保证(QPSG)。当QPSG处于活动状态时,单个SQL查询语句将始终使用相同的算法,而不管绑定参数的值如何。QPSG禁用某些查询优化,查看绑定参数的值,这可以使某些查询更慢。但QPSG具有更可预测行为的优势。在QPSG处于活动状态时,SQLite将始终在该字段中使用与实验室测试期间使用的查询计划相同的查询计划。这可以使一些查询变慢。但QPSG具有更可预测行为的优势。在QPSG处于活动状态时,SQLite将始终在该字段中使用与实验室测试期间使用的查询计划相同的查询计划。这可以使一些查询变慢。但QPSG具有更可预测行为的优势。在QPSG处于活动状态时,SQLite将始终在该字段中使用与实验室测试期间使用的查询计划相同的查询计划。