无法删除约束

时间:2015-07-22 11:04:24

标签: sql oracle constraints

在删除唯一constraint时,会发生以下错误,

  

ORA-04098:触发' SYS.XDB_PI_TRIG'无效且重新验证失败

无权重新编译此trigger

这可能是什么问题,有什么方法可以解决这个问题吗?

3 个答案:

答案 0 :(得分:0)

此错误反映了上述触发器的编译/授权失败。此触发器无效,因此无法检索执行。你可以运行

SHOW ERRORS TRIGGER SYS.XDB_PI_TRIG;

为了更好地了解该错误。

可能需要重新编译触发器。运行:

alter trigger SYS.XDB_PI_TRIG compile

将重新编译此触发器。 常见情况是用户只有运行权限而不更改相应的触发器。在这种情况下,您可能需要将触发器重新编译为SYSDBA。

答案 1 :(得分:0)

我想你可能会丢弃一个主键,检查你丢弃的约束。如果你丢弃一个pk并将其用作外键,那么这将使触发器失效。

答案 2 :(得分:0)

找到解决方案, XDB架构对数据库无效。所以我们无法删除此数据库中的任何对象。因此,使XDB架构有效,已经解决了这个问题。

感谢您的回答!