• 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 编译时选项确定。

  • 相关阅读:
    OpenCV入门9——目标识别(车辆统计)
    QCN6274 vs QCA9880: Comparison of SOC and wireless communication chips
    设计模式——20. 解释器模式
    Android 多线程、线程池
    Tomcat整体架构及其设计精髓分析(图灵)
    EasyExcel复杂表头导出(一对多)升级版
    leetcode 刷题 log day 43
    Nginx实现虚拟主机
    软考_系统设计架构师--备考重点建议与心得
    【HDU No. 5057】序列操作 Argestes and Sequence
  • 原文地址:https://blog.csdn.net/ynshi57/article/details/125527302