ORA-30926: 无法在源表中获得一组稳定的行
同时要求在一张表中添加一个字段,由于数据量较大,想使用merge into update的方式将数据
meger into xxx1 t1
using(select * from xxx2 )t2 
on(t1.xm=t2.xm and t1.dz=t2.dz)
when matched then
update 
set train_time=d_time;
commit;
执行了两个小时后
报错:ORA-30926: 无法在源表中获得一组稳定的行
后来网上查找资料meger into on 字段应给是唯一值
首先我们要知道merge into存在的意义是什么!!!
      使用merge into  是为了根据匹配条件on(condition)利用table_source 的数据更新合并table_target的数据。
merge into 的内部处理是将table_source 的每一条记录和table_target的每一条记录对比匹配,匹配到符合条件的  记录就会进行修改,匹配不到的话就会insert。如果table_source的匹配列中有重复值的话,等到第二次重复的列值匹配的时候,就会将第一次的update后的值再一次update,就是说合并后的table_target中会丢失在table_source中的记录!!!如果记录丢失的话,两表合并的意义何在?!!因此我们使用merge into要注意:源表匹配列中不能有重复值,否则无法匹配(报错!     )。

查询一下ORA-30926错误的具体说明:

Oracle Error : ORA-30926

unable to get a stable set of rows in the source tables

Cause

A stable set of rows could not be got because of large dml activity or a non-deterministic where clause.

Action

Remove any non-deterministic where clauses and reissue the dml.

If there is either a many-to-one or many-to-many relationship between the source and target tables. This is not as serious as it sounds because you would normally have to MERGE a one-to-one or one-to-zero relationship as your join condition would be protected by the target's primary key.

When performing a merge statement, the table to be merged had multiplerecords with the same key used for matching. While this is ok forrecords to be inserted into the target table, Oracle doesn't like thison the update portion of the statement. The solution is to remove the duplicate or pick a matching key that is truely unique.

There is a restriction that multiple updates to the same row in the destination table is not allowed. ORA-30926 error will be returned if this is attempted.

通过上面的信息可以得知,对目标表中的相同行数据进行多次更新是不允许的,这样会导致ORA-30926错误。

追溯代码,确保MERGE INTO中USING表对于ON中的关联条件是唯一的,注意到表DW.FACT_DEAL_AUCTION_D的数据是细化到AUCTION_ID的,会存在多条相同的CUSTID和CATID维度数据。通过使用group by修改代码即可解决。

merge into ORA-30926相关推荐

  1. 笔记系列---------sqlnet.ora维护

    一.功能及作用 # NAME # sqlnet.ora # FUNCTION # Oracle Network Client startup parameter file example # NOTE ...

  2. oracle错误号大全(查询ora错误号以及解决方法技巧)

    oracle 查询ora错误号以及解决方法技巧 racle 错误号以及解决方法技巧 经常有朋友问我ORACLE 类似ora-00109 错误的信息,其实我们的ORACLE系统本身已经为我们详细的说明了 ...

  3. Oracle 错误总结及问题解决 ORA

    使用 Ctrl + F 搜索错误代码 ORA-00001: 违反唯一约束条件 (.) 错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常. ORA-00017: 请求会话以设置跟踪事件 OR ...

  4. Oracle 错误代码详解及解决方式--ORA

    ORA-00001: 违反唯一约束条件 (.) 错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常. ORA-00017: 请求会话以设置跟踪事件 ORA-00018: 超出最大会话数 OR ...

  5. Oracle 错误代码(ORA)对照表

    ORA-00001: 违反唯一约束条件 (.) 错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常. ORA-00017: 请求会话以设置跟踪事件 ORA-00018: 超出最大会话数 OR ...

  6. ORACLE全部ORA错误收集整理

    有时数据库出现问题,不是每次都有网络可查,所以把所有的ora系列的错误整理出来, 在最没有办法的时候,需要自己来解决,有了这些根据,问题会好办的.虽说对于数据库方面, DBA很强大,他们在遇到错误时, ...

  7. Oracle ORA

    ORA-00001: 违反唯一约束条件 (.) 错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常. ORA-00017: 请求会话以设置跟踪事件 ORA-00018: 超出最大会话数 OR ...

  8. Oracle学习笔记 --- Oracle ORA错误解决方案

    今天在Debug的时候报错了如下信息: 后来综合了网上的东西,总结如下: ORA-00001: 违反唯一约束条件 (.) 错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常. ORA-000 ...

  9. 转:oracle-ora 各种sql异常描述以及ora返回值意思

    ORA-00904:     --invalid column name 无效列名 ORA-00942: --table or view does not exist 表或者视图不存在 ORA-014 ...

  10. GitHub 中 Merge pull request 的 3 中选项说明

    Merge pull request 提供了 3 种 merge 方法: Create a merge commit:GitHub 的底层操作是 git merge --no-ff.feature 分 ...

最新文章

  1. java程序ssh置顶_使用shell脚本启动远程(SSH)Java应用程序不会返回本地提示
  2. MVC框架内容-模型
  3. 使用ES6的Promise完美解决回调地狱
  4. 算法---------数组-----------翻转单链表
  5. git show HEAD^num和个git show HEAD~num的区别
  6. mysql数据库(3)-查询
  7. H264 CAVLC 研究
  8. 获取zabbix监控数据
  9. 原生JS大揭秘—数据类型
  10. 抖音发布女性数据报告:平均每天31.8万女性发布自拍视频又删除
  11. 学习OpenMV(二)I/O教程
  12. 数据仓库常见建模方法与大数据领域建模实例综述
  13. boobooke视频汇总
  14. 想拿腾讯、阿里、字节跳动offer,除了技术还需要哪些成长?
  15. 古筝四秀 宋婷婷、付娜、常静、吴莉
  16. linux 性能分析工具——perf
  17. 解密:LL与LR解析 1(译)
  18. 利用three建立一个3d园区
  19. Introducing a forensics data type taxonomy of acquirable artefacts from PLCs
  20. pl.droidsonroids.gif.GifImageView 动态加载gif图片不动的问题

热门文章

  1. Time, Clocks, and the Ordering of Events in 翻译
  2. 27. 移除元素 golang
  3. C++ 标准输入流01
  4. wpa_supplicant wifi密码错误检测
  5. c语言实现配置文件的读写
  6. 【计算机系统设计】实践笔记(2)数据通路构建:第一类R型指令分析(1)
  7. 标准输入输出(C++)
  8. 83. 删除排序链表中的重复元素
  9. 【聊透SpringMVC】java技术经理岗位职责
  10. Java面试题2020,单击更改以将java安装到其他文件夹