执行select *查询Project表无数据仅显示null问题咨询
问题根因
- 你为
Project.DepartmentID字段设置了关联Department.did的外键,约束规则为RESTRICT,该规则要求向Project表插入数据时,指定的DepartmentID必须是Department表中已经存在的did值,否则插入操作会被直接拒绝。 - 你提供的SQL代码仅创建了Department表,未插入任何记录,Department表本身为空,插入Project时用到的1、2两个DepartmentID不存在,所以插入语句执行失败,Project表无数据,查询自然返回空结果。
修复方案
- 优先向Department表插入对应记录,再执行Project的插入操作,示例代码如下:
-- 先插入Department数据,自增主键did会自动生成1、2 INSERT INTO Department(Dname, location) VALUES ('技术部', '深圳'), ('网络部', '广州'); -- 再执行原有Project插入逻辑即可成功 INSERT INTO Project(DepartmentID, Pname, budget, StartYear) VALUES(1, 'OS', 5000.00, 2018), (2, 'Net', 6000.00, 2020);
- 插入完成后重新执行
SELECT * FROM Project即可正常返回数据。
额外注意事项
- 你的表结构中设置了
Project.DepartmentID的默认值为5,后续如果使用默认值插入数据,需要保证Department表中存在did=5的记录,否则同样会触发外键约束导致插入失败。 - 如果你执行插入时没有收到任何错误提示,建议开启SQL执行的错误告警配置,方便快速定位约束类执行失败问题。
内容的提问来源于stack exchange,提问作者SilentEM
相关产品推荐
相关产品推荐

