You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQLite插入违反外键约束数据无报错问题咨询

你遇到的现象不是对外键逻辑的理解存在错误,是SQLite本身的版本特性和默认配置导致的,具体原因如下:

  • 版本兼容问题:你使用的SQLite 2.8.17版本本身不支持外键约束强制执行,建表语句中的外键声明仅做语法兼容处理,不会实际校验关联数据的存在性。
  • 默认配置问题:即使升级到3.6.19及以上支持外键约束的SQLite版本,外键检查默认也是关闭状态,需要手动执行PRAGMA foreign_keys = ON;开启,该配置仅对当前数据库连接会话生效。

你可以升级到高版本SQLite后按以下操作验证,即可触发预期的外键约束报错:

sqlite> PRAGMA foreign_keys = ON;
sqlite> create table a (aid integer primary key, name text);
sqlite> create table b (bid integer, aid integer, name text, foreign key(aid) references a(aid));
sqlite> insert into b values (1,1,'wtf');
Error: FOREIGN KEY constraint failed

内容的提问来源于stack exchange,提问作者Josh Vander Hook

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 10:36:07