Oracle 程序ORA-00001中的更新

Oracle 程序ORA-00001中的更新,oracle,plsql,indexing,sql-update,Oracle,Plsql,Indexing,Sql Update,我对程序中的更新有问题。过程编译和我看到(DBMS…)结果示例100记录和错误 ORA-00001:违反唯一约束(客户信息通信方法) 我的更新: UPDATE customer_info_comm_method_tab SET Value=wynikOK WHERE customer_id=cus_rec.customer_id AND method_id='E_MAIL' AND Value = p_stringWyn; wynikOK-实际新值 cus_rec.cust

我对程序中的更新有问题。过程编译和我看到(DBMS…)结果示例100记录和错误
ORA-00001:违反唯一约束(客户信息通信方法)

我的更新:

UPDATE customer_info_comm_method_tab SET Value=wynikOK WHERE 
         customer_id=cus_rec.customer_id AND method_id='E_MAIL' AND Value = p_stringWyn;
  • wynikOK-实际新值
  • cus_rec.customer_id-光标中的实际客户_id
  • p_stringWyn-表中的旧值
  • 密钥基于我使用的三个属性(CUSTOMER\u ID、VALUE、METHOD\u ID)

    当然,我不能删除索引CUSTOMER\u INFO\u COMM\u METHOD\u UX,因为它不是我的数据库


    如果我对更新过程进行了100%无错误的注释,但我需要执行此更新,则表示您的新值(wynikOK)导致了冲突。customer_id、新值(wynikOK)和方法id的组合已存在于表的另一行中。但这必须是独一无二的

    如果此值组合(客户、值、方法)不是唯一的,则删除表中的唯一约束


    否则,值必须是唯一的。尝试为新值附加一些字符串,使其唯一。假设您的值为1234,请尝试将日期附加到此值1234_23112012,以便该值始终唯一。

    我不确定您的问题是什么。您违反了唯一密钥约束。删除此错误的唯一方法是不违反该约束。“如果我对更新过程进行了注释,请100%无错误地编译”——所以请对其进行注释!虫族:但我必须这么做Update@Przemek:无法执行违反约束的更新。添加约束是为了不破坏完整性,但您希望这样做。因此,要么改变主意,要么删除约束。然后,要么你的唯一约束(主键)不合适,你应该选择另一个主键,要么你需要重新考虑更新到该值的要求,并以不同的方式回答问题。