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

Oracle中Drugs表补填D_price字段遇约束错误的解决咨询

解决Oracle中Drugs表D_price字段补填问题

嘿,我来帮你理清这两个报错的原因,然后给你正确的解决方法:

先说说你遇到的两个错误原因

  • ORA-00001: 唯一约束冲突:你用INSERT语句尝试添加D_id=50的记录,但这个ID对应的记录已经存在于Drugs表中了(你提到前3列数据已经填充完成)。INSERT是用来新增一条全新记录的操作,而不是修改已有记录,所以触发了主键(或唯一约束)的冲突——因为D_id应该是表的主键,不允许重复值。
  • ORA-00933: SQL命令格式错误:INSERT语句本身不支持WHERE子句,这个语法是完全错误的。你想要修改已有记录的字段值,应该用UPDATE语句,而不是INSERT。

正确的补填方法

要给已存在的D_id=50的记录补填D_price值,你需要使用UPDATE语句,具体写法如下:

UPDATE drugs 
SET d_price = 400 
WHERE d_id = 50;

如果你的Oracle会话没有开启自动提交,执行完上面的语句后,记得执行COMMIT;来提交修改:

COMMIT;

额外小提示

如果需要批量给多个D_id的记录补填价格,可以这样写(示例):

UPDATE drugs 
SET d_price = CASE 
                WHEN d_id = 50 THEN 400
                WHEN d_id = 51 THEN 350
                WHEN d_id = 52 THEN 280
              END
WHERE d_id IN (50, 51, 52);

这样可以一次性更新多条符合条件的记录,避免重复执行单条UPDATE语句。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:58:30