当前位置: 首页 > news >正文

无法运行的update问题解析(r5笔记第57天)

今天有个同事向我反馈一个问题,说是客户在部署他们提供的一个sql语句时,报了ora错误,想让我帮忙看看是什么原因。update sub_errs set error_status = 'READY_TO_RECYCLE' WHERE sub_appl_id = 3008 AND ENTITY_ID = 8336079 AND MASTER_TRX_ID = 202809364 and error_status = 'PENDING_DEPENDENCY' Error report - SQL Error: ORA-02290: ????????????????????????????? (APPO.SUB_ERRS_1CK) 首先看错误,还真接上小语种了,自己百度翻译了下,是违反约束条件的意思,也是开个玩笑,这个问题可以通过oerr来查看oracle的解释。02290, 00000, "check constraint (%s.%s) violated"// *Cause: The values being inserted do not satisfy the named check // constraint.// *Action: do not insert values that violate the constraint.可以看出应该是约束的地方出问题了,从约束的命名来看是以CK结尾,即check constraint。查看user_constraints中的search_condition字段,条件着实复杂,search_condition的条件如下:(depen_ind='S' AND error_status='PENDING_DEPENDENCY')OR (depen_ind='S' AND error_status='COMPLETED')OR (depen_ind='S' AND error_status='PURGED')OR depen_ind='B'OR depen_ind='N'即对于指定的字段error_status 需要满足上面的这些条件。这个check constraint算是一个比较复杂的约束了。error_status ,满足上面的条件才行。自己采用了exp的query选项导出数据,这样就会只导出19条数据,数据量就小多了,导入到一个测试环境中,就可以大胆的测试了。exp xxxxx/xxx file=a.dmp tables=sub_errs query=\" where sub_appl_id = 3008 AND ENTITY_ID = 8336079 \"我先根据id来抽取数据,抽取出19条数据来,然后在测试用户中使用对应的约束进行修改,看看问题是否会复现。导入数据很顺利,19条数据很快就导入了。imp xxxxx/xxxx file=a.dmp tables=sub_errs indexes=n grants=n ignore=Y constraints=n buffer=9102000 error_status = 'PENDING_DEPENDENCY' ((depen_ind='S' AND error_status='PENDING_DEPENDENCY')'READY_TO_RECYCLE',这个时候细看过滤条件中,是没有符合的error_status校验的,这个时候depen_ind还是S,就会出问题,READY_TO_RECYCLE',所以第1,2两个条件不会起作用,考虑第3,4个条件,就会发现没有匹配的情况。难怪会抛错。((depen_ind='S' AND error_status='PENDING_DEPENDENCY')OR (depen_ind='S' AND error_status='COMPLETED')OR (depen_ind='S' AND error_status='PURGED')OR depen_ind='B'OR depen_ind='N')update sub_errs set error_status = 'READY_TO_RECYCLE',depen_ind='N' WHERE sub_appl_id = 3008 AND ENTITY_ID = 8336079 AND MASTER_TRX_ID = 202809364 and error_status = 'PENDING_DEPENDENCY'

相关文章:

  • shell中echo的显示格式 (r5笔记第58天)
  • 人的力量和大自然的力量 (r5笔记第59天)
  • 半自动化运维之快速连接到指定环境(一) (r5笔记第61天)
  • 巧用外部表备份历史数据(r5笔记第62天)
  • pl/sql中的forall简单测试(r5笔记第63天)
  • 一次ORA-00600问题的排查和分析(上)(r5笔记第64天)
  • 一次ORA-00600问题的排查和分析(下)(r5笔记第65天)
  • 毕业设计的小故事(r5笔记第67天)
  • 重启数据库的一场闹剧(r5笔记第68天)
  • 关于aio的设置的讨论(r5笔记第69天)
  • 一条sql语句的改进探索(r5笔记第70天)
  • 海量数据迁移之传输表空间(一) (r5笔记第71天)
  • 数据刷新中的并行改进(r5笔记第72天)
  • 一条sql语句的建议调优分析(r5笔记第73天)
  • 泰国之旅随感(r1笔记第70天)
  • “大数据应用场景”之隔壁老王(连载四)
  • angular2开源库收集
  • avalon2.2的VM生成过程
  • PyCharm搭建GO开发环境(GO语言学习第1课)
  • Rancher-k8s加速安装文档
  • react-native 安卓真机环境搭建
  • 初识 beanstalkd
  • 从setTimeout-setInterval看JS线程
  • 使用 Node.js 的 nodemailer 模块发送邮件(支持 QQ、163 等、支持附件)
  • 我的面试准备过程--容器(更新中)
  • 线上 python http server profile 实践
  • ​queue --- 一个同步的队列类​
  • #AngularJS#$sce.trustAsResourceUrl
  • (Oracle)SQL优化技巧(一):分页查询
  • (ZT) 理解系统底层的概念是多么重要(by趋势科技邹飞)
  • (编程语言界的丐帮 C#).NET MD5 HASH 哈希 加密 与JAVA 互通
  • (第一天)包装对象、作用域、创建对象
  • (附源码)小程序 交通违法举报系统 毕业设计 242045
  • (蓝桥杯每日一题)平方末尾及补充(常用的字符串函数功能)
  • (一)认识微服务
  • (转载)VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)
  • (轉貼) VS2005 快捷键 (初級) (.NET) (Visual Studio)
  • . NET自动找可写目录
  • ./mysql.server: 没有那个文件或目录_Linux下安装MySQL出现“ls: /var/lib/mysql/*.pid: 没有那个文件或目录”...
  • .net framework 4.0中如何 输出 form 的name属性。
  • .NET I/O 学习笔记:对文件和目录进行解压缩操作
  • .NET 简介:跨平台、开源、高性能的开发平台
  • .net遍历html中全部的中文,ASP.NET中遍历页面的所有button控件
  • .NET连接MongoDB数据库实例教程
  • .net之微信企业号开发(一) 所使用的环境与工具以及准备工作
  • ::
  • @angular/cli项目构建--Dynamic.Form
  • [.net]官方水晶报表的使用以演示下载
  • [100天算法】-实现 strStr()(day 52)
  • [bzoj1901]: Zju2112 Dynamic Rankings
  • [C/C++]_[初级]_[关于编译时出现有符号-无符号不匹配的警告-sizeof使用注意事项]
  • [c]扫雷
  • [delphi]保证程序只运行一个实例
  • [DevEpxress]GridControl 显示Gif动画
  • [Excel]如何找到非固定空白格數列的條件數據? 以月份報價表單為例