引用一个似乎不存在的约束的Oracle唯一约束违规

问题描述:

我收到一个我无法理解的错误。错误是非常简单的:引用一个似乎不存在的约束的Oracle唯一约束违规

ORA-00001: unique constraint (*schema*.*xyz_constraint*) violated 

但是,什么导致我的困惑是事实上,没有这样的约束似乎存在。这当然没有在桌面上定义;所讨论的数据库几乎没有定义完整的参照完整性,而我插入数据的特定表没有定义键。

对于它的价值,我不能在任何地方在数据库中找到约束:

select * 
    from all_constraints 
    where constraint_name like '%xyz_constraint%' 

有什么我俯瞰?谢谢。

+6

尝试寻找它再次当试图这样一个独特的** **指数将有一个重复的,Oracle将作为一个独特的** **约束违规报告。所以我会建议寻找唯一的索引,除了约束。 – 2012-01-17 05:56:30

当约束属于另一个用户并且您没有权限时会发生这种情况。

现在从SYS角度

+0

我将不得不聘请一名DBA。自然,我没有SYS访问模式。看看有什么问题会很有趣,因为这已经在两年多的时间里没有约束问题了。今天我得到了600个错误。感谢您的反馈;我会让你知道我找到了什么。 – Ickster 2012-01-17 03:03:02

+0

@Ickster:我不记得原因,但我有完全相同的行为,这是我说的;-)无论如何,在你的研究中祝你好运,并期待详细信息它的实际情况 – zerkms 2012-01-17 03:07:42

+2

只需查询而不是'DBA_CONSTRAINTS'。如果你有权访问这个视图,那么如果约束存在,它就会在那里。 'SYS'不一定是必需的 - 'SYSTEM'也可以访问它。 – 2012-01-17 03:10:58

模式对象名称几乎总是以大写形式存储。尝试

select * 
from all_constraints 
where constraint_name like '%XYZ_CONSTRAINT%' 

ORA-00001通常会发生重复的主键。你确定你没有桌子吗?

+0

我运行的实际查询包含的约束名称与我在收到的错误中返回的约束名称完全相同。我很积极,没有定义在桌子上的钥匙。唯一的约束是几个字段上的NOT NULL声明。 – Ickster 2012-01-17 03:01:11