首页 > 数据库 > mysql教程 > 为什么 SQLite3 外键约束在使用'PRAGMAforeign_keys = ON;”之前似乎无法插入?

为什么 SQLite3 外键约束在使用'PRAGMAforeign_keys = ON;”之前似乎无法插入?

Linda Hamilton
发布: 2025-01-04 18:49:40
原创
969 人浏览过

Why Do SQLite3 Foreign Key Constraints Seem to Fail INSERTs Until `PRAGMA foreign_keys = ON;` is Used?

SQLite3 外键约束:为什么 INSERT 在没有引用的情况下会成功

虽然 SQLite3 提供了对外键约束的支持,但在尝试插入时会出现问题将记录写入子表而不遵守约束。这种神秘的行为可能会让您感到困惑。

为了解开这个谜团,让我们检查一下提供的 SQL 脚本。它建立两个表:“Persons”和“Orders”,其中“Orders”中的“P_Id”是引用“Persons”中主键的外键。

将数据插入“Orders”表时,即使“Persons”表为空,插入操作似乎也不会出现错误。这是因为 SQLite3.x 中不会自动启用外键约束。

要纠正此异常并强制外键完整性,每次与 SQLite 数据库建立连接时都必须执行以下“PRAGMA”查询:

PRAGMA foreign_keys = ON;
登录后复制

通过发出此指令,SQLite3 将严格执行所有外键约束,防止违反这些约束的插入

这种特性源于 SQLite 与其早期版本 SQLite 2.x 的遗留兼容性。然而,在 SQLite 4.x 中,外键约束将作为默认设置启用,从而掩盖了这种奇怪的行为。

以上是为什么 SQLite3 外键约束在使用'PRAGMAforeign_keys = ON;”之前似乎无法插入?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板