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

Oracle SQL执行报ORA-02291错误,如何定位并解决该问题?

ORA-02291错误原因及解决方法

ORA-02291错误本质是外键约束违反:向设置了外键的子表插入数据时,外键字段的取值必须在关联父表的主键字段中已存在,否则就会触发该报错。

本次报错发生在comm_shopping_cart表的INSERT语句执行阶段,核心问题是你把order_id和product_id两个字段的赋值顺序完全写反了。

具体问题证据:

  • 建表时comm_shopping_cart的字段顺序为:orderdetails_id、order_id、product_id、quantity、price
  • 已插入的comm_orders表order_id取值为11、12、13、14、15,不存在01-05的取值
  • 已插入的comm_products表product_id取值为01、02、03、04、05,不存在11-15的取值
  • 你编写的插入语句insert into comm_shopping_cart values(701, 01, 11, 4, 250);中,给order_id传了父表不存在的01,给product_id传了父表不存在的11,直接违反外键约束。

修正方案

调整comm_shopping_cart插入语句中order_id和product_id的顺序即可,修正后代码如下:

-- 修正后的comm_shopping_cart插入语句
insert into comm_shopping_cart values(701, 11, 01, 4, 250);
insert into comm_shopping_cart values(702, 12, 02, 3, 120);
insert into comm_shopping_cart values(704, 13, 03, 6, 100);
insert into comm_shopping_cart values(703, 14, 04, 2, 250);
insert into comm_shopping_cart values(705, 15, 05, 1, 500);

建议后续写INSERT语句时显式指定字段名,避免字段顺序变动导致的隐式错误,写法参考:

insert into comm_shopping_cart(orderdetails_id, order_id, product_id, quantity, price) 
values(701, 11, 01, 4, 250);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 00:00:05