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

ORA-02291约束违反错误:如何成功执行指定INSERT语句?

解决ORA-02291: 违反完整性约束(未找到父键)的问题

嘿,这个ORA-02291错误其实很好定位——本质就是你要插入的记录里,某个外键字段的值在对应的父表中找不到匹配的主键记录,违反了外键完整性约束。咱们先拆解你的表结构,再一步步排查解决:

先明确你的表外键关联

你创建的centralsupplies表有三个外键约束,分别关联三个父表:

  • wardnum → ward表的wnum字段(主键)
  • drugnum → pharmasupplies表的dnum字段(主键)
  • staffnum → staff表的stnum字段(主键)

排查第一条插入语句的问题

你的第一条插入语句是:

insert into centralsupplies values(1,204,1000,125,300,DATE '2020-01-02',DATE '2020-01-12');

这里的外键值分别是wardnum=1、drugnum=204、staffnum=125,你需要逐一检查这些值在对应父表中是否存在:

1. 检查ward表是否有wnum=1的记录

执行这条查询验证:

SELECT * FROM ward WHERE wnum = 1;

如果查询无结果,说明你需要先往ward表插入一条包含wnum=1的记录(记得补充ward表的其他必填字段):

-- 示例,根据ward表实际结构调整字段
INSERT INTO ward(wnum, [其他必填字段]) VALUES(1, [对应值]);

2. 检查pharmasupplies表是否有dnum=204的记录

执行查询:

SELECT * FROM pharmasupplies WHERE dnum = 204;

如果无结果,先插入对应记录(补充表的其他必填字段):

INSERT INTO pharmasupplies(dnum, [其他必填字段]) VALUES(204, [对应值]);

3. 检查staff表是否有stnum=125的记录

执行查询:

SELECT * FROM staff WHERE stnum = 125;

如果无结果,先插入对应记录(补充表的其他必填字段):

INSERT INTO staff(stnum, [其他必填字段]) VALUES(125, [对应值]);

最后执行插入

当三个父表都存在对应的主键记录后,再重新执行你的第一条插入语句,就能成功插入了。外键约束的核心就是保证子表的外键值必须在父表的主键(或唯一键)中存在,这样才能维护数据的完整性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 10:52:55