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

为什么FOREIGN KEY外键约束失效,关联表不存在的值仍可插入?

问题原因

你遇到的外键约束不生效问题,核心原因是你使用的SQLite数据库默认关闭了外键约束校验功能。出于旧版本兼容性的设计考虑,SQLite即便识别到建表语句中的外键定义,也不会默认对插入、更新操作做关联合法性校验,因此才会出现插入Student表中不存在的StudentId也能执行成功的情况。从你给出的查询结果用|分隔的输出格式来看,也符合SQLite的默认输出特征。

修复方案

  • 在执行所有业务SQL前,先运行开启外键校验的配置语句:
PRAGMA foreign_keys = ON;
  • 该配置属于连接级生效配置,仅对当前数据库连接生效,每次新建连接都需要重新执行,连接关闭后配置会自动失效。

将上述语句放在你所有SQL代码的最开头重新运行,此时插入StudentId=2001的语句就会触发外键约束违反的错误,无法正常插入。

内容的提问来源于stack exchange,提问作者gpvt

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 11:54:00