首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在ORA-00001 (dup_val_on_index)上查找违犯索引

在ORA-00001 (dup_val_on_index)上查找违犯索引
EN

Database Administration用户
提问于 2016-09-05 11:08:12
回答 2查看 1.1K关注 0票数 1

我有一张有几个索引的桌子。在我的应用程序代码中,可能存在违反这些索引的实例,这取决于用户的输入。

当我的PL/SQL代码无意中遇到ORA-00001时,我想准确地记录哪个索引被违反了。

是否有一种方法可以知道哪个索引违规导致甲骨文引发dup_val_on_index

EN

回答 2

Database Administration用户

回答已采纳

发布于 2016-09-05 11:17:12

AskTom已经讨论过这一点

可以通过以下方式实现这一目标:

代码语言:javascript
复制
BEGIN
   -- code containing INSERT operation
EXCEPTION
   WHEN dup_val_on_index THEN
      Trace_SYS.Message(substr(sqlerrm, instr(sqlerrm, '(')+1,
                                        instr( sqlerrm, ')') - instr( sqlerrm,'(') -1 ));
END;
票数 3
EN

Database Administration用户

发布于 2018-05-09 21:06:27

Oracle的备用表达式是从正则表达式开始实现的。

REGEXP_REPLACE(SQLERRM,'.*((.*)).*','\1')

票数 2
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/148828

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档