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

Ick*_*ter 6 oracle oracle10g unique-constraint

我收到一个我无法理解的错误.错误非常简单:

ORA-00001: unique constraint (*schema*.*xyz_constraint*) violated
Run Code Online (Sandbox Code Playgroud)

然而,造成我困惑的是事实上似乎不存在这样的约束.它当然没有在桌子上定义; 有问题的DB几乎没有定义参照完整性,我插入数据的特定表没有定义键.

对于它的价值,我无法在数据库中的任何位置找到约束:

    select *
    from all_constraints 
    where constraint_name like '%xyz_constraint%'
Run Code Online (Sandbox Code Playgroud)

有什么我可以忽略的吗?谢谢.

小智 8

我遇到了完全相同的错误,这不是权限问题。相反,该实体原来INDEX不是一个CONSTRAINT,我发现它是:

SELECT * FROM ALL_INDEXES WHERE INDEX_NAME LIKE '%XYZ_UK1'
Run Code Online (Sandbox Code Playgroud)

...因为它不存在于ALL_CONSTRAINTS或 中DBA_CONSTRAINTS。混淆错误消息是如何相同的。我正在运行 Oracle 11g。


zer*_*kms 4

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

现在尝试从 SYS 角度再次查看它

  • 只需查询“DBA_CONSTRAINTS”即可。如果您有权访问此视图,那么如果约束存在,它就会存在。`SYS` 不一定是必需的 - `SYSTEM` 也可以访问它。 (2认同)