sqlite3 dbconfig说明

sqlite3 dbconfig说明

enable_fkey: 此选项用于启用或禁用 外键约束的实施。应该有两个额外的论点。第一个参数是一个整数,0 表示禁用 FK 强制,正数表示启用 FK 强制或负数表示 FK 强制不变。第二个参数是一个指向整数的指针,其中写入 0 或 1 以指示 FK 强制在此调用之后是关闭还是打开。第二个参数可能是一个 NULL 指针,在这种情况下,不会报告 FK 强制设置。

enable_trigger: 此选项用于启用或禁用触发器。应该有两个额外的论点。第一个参数是一个整数,0 表示禁用触发器,正数表示启用触发器,负数表示设置不变。第二个参数是一个指向整数的指针,其中写入 0 或 1 以指示在此调用之后触发器是禁用还是启用。第二个参数可能是 NULL 指针,在这种情况下不报告触发设置。最初此选项禁用所有触发器。但是,从 SQLite 版本 3.35.0 开始,即使关闭此选项,仍允许使用 TEMP 触发器。因此,换句话说,此选项现在仅禁用主数据库模式或 ATTACH 数据库模式中的触发器。

enable_view: 此选项用于启用或禁用

视图

fts3_tokenizer: 此选项用于启用或禁用 fts3_tokenizer()函数,该函数是 FTS3全文搜索引擎扩展的一部分。应该有两个额外的论点。第一个参数是一个整数,0 表示禁用 fts3_tokenizer(),正数表示启用 fts3_tokenizer(),负数表示设置不变。第二个参数是一个指向整数的指针,其中写入 0 或 1 以指示在此调用之后 fts3_tokenizer 是禁用还是启用。第二个参数可能是一个 NULL 指针,在这种情况下,新设置不会报告回来。

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 指针,在这种情况下,新设置不会报告回来。

no_ckpt_on_close: 通常当 wal 模式下的数据库关闭或与数据库句柄分离时,SQLite 会检查这是否意味着现在根本没有与数据库的连接。如果是这样,它会在关闭连接之前执行检查点操作。此选项可用于覆盖此行为。传递给此操作的第一个参数是一个整数 – 正数表示禁用关闭检查点,或零(默认值)以启用它们,负数表示保持设置不变。第二个参数是一个指向整数的指针,其中写入 0 或 1 以指示关闭时检查点是否已禁用 – 如果未禁用,则为 0,如果已禁用,则为 1。

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

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

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 和多个步骤来帮助确保它不会意外发生。

defensive: 激活或停用数据库连接的”防御”标志。启用防御标志后,允许普通 SQL 故意破坏数据库文件的语言功能将被禁用。禁用的功能包括但不限于以下内容:

writable_schema: 获取或设置是否能够修改系统表。

legacy_alter_table: 项激活或停用ALTER TABLE RENAME命令的旧行为。

dps_dml: 激活或停用DML 语句(即 DELETE、INSERT、SELECT 和 UPDATE 语句)的传统双引号字符串文字错误功能。此设置的默认值由-DSQLITE_DQS 编译时选项确定。

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

Original: https://blog.csdn.net/ynshi57/article/details/125527302
Author: 全麦Logan
Title: sqlite3 dbconfig说明

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/816991/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球