【问题标题】:Oracle Unique constraint violated ORA-00001 without duplicate values没有重复值的 Oracle 唯一约束违反 ORA-00001
【发布时间】:2017-02-10 05:14:56
【问题描述】:

我有一个使用序列的表,并且还定义了一个索引。错误出现在索引上,对于定义索引的五列的组合,我在表中找不到任何重复值。我尝试了以下方法:

  1. 我彻底检查了违反索引的重复值
  2. 将最大值(序列)与序列的下一个值匹配。
  3. 如果索引损坏,请重建索引。
  4. 此表上也没有定义触发器。

所有这些都到位,但我仍然面临错误。请帮助我还能尝试什么!

【问题讨论】:

  • 当您收到此错误时,您要执行什么操作?创建索引还是插入数据?
  • 我正在尝试插入数据,当我尝试手动添加时,该数据已成功添加。但是我不能对每个失败的值都这样做,因为这个数字很大。
  • 您是否可能误解了序列的工作原理,并且“下一个”值与您的数据项之一发生冲突?否则,将 create table 语句(至少是定义索引和相关字段的位)添加到上面的问题中。还要描述您如何获取数据并进行插入,因为问题可能是缓冲等。
  • 有一个被调用的过程,其中包含导致问题的插入语句。此外,如果您能解释缓冲如何导致问题,我将不胜感激。因为当我尝试手动插入单个值时,它不会给我任何错误。
  • "有一个程序..." 你手动插入的时候有没有调用程序?它是内置程序还是您编写的。如果您编写了程序,请将其放在问题中,以便人们看到问题。

标签: oracle11g


【解决方案1】:

听起来您正在尝试使用表中已存在的 e 键将行插入表中。为什么不对表进行选择,使用您尝试插入的键列的值并验证是否确实如此?

【讨论】:

  • 我试过这样做。表中没有插入失败的值(给出唯一约束违规错误)
  • @Shivanispv 你能分享你正在运行的导致问题的确切代码,以及有效的语句吗?
  • 很抱歉,我不允许这样做,但我可以告诉你,这是一个由 Windows 服务运行的简单插入查询。有效的语句也是手动运行的插入查询。
  • @Shivanispv。你能用一个简单的例子重现这个问题吗?例如,使用 SCOTT 模式中的标准 EMP 表?
  • 插入 SCOTT.EMP(emp_id,name,dept,application_working_on,role,doj) 值 (emp_seq.nextval,'xyz','IS','Some_application','DBA',to_date( '1-5-1981‌​','dd-mm-yyyy')) 假设我在 dept、application_working_on 和 role 上定义了一个唯一索引,考虑到每个应用程序只有一个具有特定角色的员工。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-11-06
  • 1970-01-01
  • 2016-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多