merge into ORA-30926

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 INTOUSING表对于ON中的关联条件是唯一的,注意到DW.FACT_DEAL_AUCTION_D的数据是细化到AUCTION_ID的,会存在多条相同的CUSTIDCATID维度数据。通过使用group by修改代码即可解决。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/398290.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

rocketmq 如何保证高可用_RocketMq容灾、高可用方案

一、实现分布式集群多副本的三种方式1.1 M/S模式即Master/Slaver模式。该模式在过去使用的最多,RocketMq之前也是使用这样的主从模式来实现的。主从模式分为同步模式和异步模式,区别是在同步模式下只有主从复制完毕才会返回给客户端;而在异步…

Debian 9 strech 安装 ROS lunar

1. 配置源 按照我以前的博客配置或者按照wiki上的配置。 2. sudo sh -c echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list3. sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:…

谈Find指令

Linux下find命令在目录结构中搜索文件,并执行指定的操作。Linux下find命令提供了相当多的查找条件,功能很强大。由于find具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时间来了解一下。即使系统中含有网络文件系…

数据库原理归档——对于数据库原理最全的总结

恭喜你来到新天地! 以下的笔记是我复习了三次总结出来的,属于一个归档。目前还在对以往的知识做一个更加详细地总结,所以仍在更新中。这份笔记对于新手入门数据库来说十分友好,语言通俗易懂。在数据库中,还涉及到很多…

k8s部署tomcat及web应用_部署 Spring Boot 应用到 K8S 教程

点击上方 Java后端,选择 设为星标优质文章,及时送达作者:qingmuqingmu.io/2020/04/08/Spring-Boot-Operator-User-Guide/前言在Kubernetes中部署spring boot应用整体上来说是一件比较繁琐的事情,而Spring Boot Operator则能带给你…

Web性能优化分析

如果你的网站在1000ms内加载完成,那么会有平均一个用户停留下来。2014年,平均网页的大小是1.9MB。看下图了解更多统计信息。 直击现场 《HTML开发MacOSApp教程》 http://pan.baidu.com/s/1jG1Q58M 网站的核心内容需要在1000ms内呈现出来。如果失败了&a…

Ionic 自定义组件中使用 Ionic 官方组件

问题起因&#xff1a; 在项目目录中使用 ionic g component SearchBar 加入一个新的自定义组件并在 html 中插入代码&#xff1a; 1 <div> 2 <ion-searchbar 3 [(ngModel)]"myInput" 4 showCancelButton"true" 5 placeholder"…

scp构造端口_指定端口号的scp

指定端口号的scp我正在尝试将文件从远程服务器scp到我的本地计算机。 只有80端口可以访问。我试过了&#xff1a;scp -p 80 usernamewww.myserver.com:/root/file.txt .但得到了这个错误&#xff1a;cp: 80: No such file or directory如何在scp命令中指定端口号&#xff1f;On…

闭包/Block当成函数参数实现回调

2019独角兽企业重金招聘Python工程师标准>>> Swift // MARK:// MARK: 获取数据/// 获取数据class func toolLoadData(completion:(finish: String) -> ()? ,content: String) {self .nextStepRequest({ (finish) -> ()? in// 接收到数据 调用 block 传递数据…

利用find同时查找多种类型文件

find . -name "*.c" -o -name "*.cpp" -o -name "*.h" 就可以列出当前目录下面所有的c,cpp,h文件转载于:https://www.cnblogs.com/baizx/p/4438905.html

JS动态插入HTML后不能执行后续JQUERY操作

通过js追加的html 发现 不能点击 执行函数 普通绑定事件&#xff1a;$(.btn1).click(function(){}绑定 事件委托 解决方法&#xff1a; $("body").delegate(".class","click",function(){}); on绑定事件&#xff1a;$(document).on(click,.btn2,…

linux重装eclipse_Linux环境安装Eclipse工具开发

2、上传到虚拟机进行解压缩操作&#xff1a;[hadoopslaver1 package]$ tar -zxvf apache-maven-3.5.3-bin.tar.gz -C /home/hadoop/soft/3、配置Maven的环境变量&#xff1a;[hadoopslaver1 soft]$ sudo vim /etc/profileexport MAVEN_HOME/home/hadoop/soft/apache-maven-3.5.…

js中如何判断一个DOM对象是否存在?

<div id"div1"></div> if(!!document.getElementById("div1"))转载于:https://www.cnblogs.com/AmayaWang/p/5528320.html

使用labview读取一副位图,并进行BCG校准(或修改其BCG)程序解析

进行图像处理第一步肯定就是要读取一副图片&#xff0c;然后再进行图像的BCG校准。 首先讲解一下用到的函数第一个函数为IMAQ Create&#xff0c;位于 视觉与运动--Vision Utilities---Image Management---IMAQ create 函数如图&#xff0c;对于如何看函数功能&#xff0c;还是…

实现生成小学四则运算练习题

实现小学四则运算练习题 1.题目要求 本次作业要求两个人合作完成&#xff0c;驾驶员和导航员角色自定&#xff0c;鼓励大家在工作期间角色随时互换&#xff0c;这里会布置两个题目&#xff0c;请各组成员根据自己的爱好任选一题。 题目1&#xff1a; 我们在刚开始上课的时候介绍…

交换机组播风暴_广播风暴的成因以及解决办法有哪些?

广播风暴就是因为以太网中出现了明环或暗环&#xff0c;引起广播包被指数涨速递增&#xff0c;整个网络流量被广播包占据&#xff0c;其他的转发业务不能进行。以太交换机对广播包的处理&#xff0c;是不管从哪个端口收到广播包&#xff0c;都完整地复制一份转发到其他端口(除接…

inotify用法简介及结合rsync实现主机间的文件实时同步

一、inotify简介 inotify是Linux内核2.6.13 (June 18, 2005)版本新增的一个子系统&#xff08;API&#xff09;&#xff0c;它提供了一种监控文件系统&#xff08;基于inode的&#xff09;事件的机制&#xff0c;可以监控文件系统的变化如文件修改、新增、删除等&#xff0c;并…

[转] 64位windows下添加postgreSQL odbc数据源

系统环境&#xff1a;windows7 64位 postgreSQL9.0&#xff08;64bit)ps&#xff1a;安装postgreSQL时确定安装了odbc驱动。问题&#xff1a;点击“开始-》控制面板-》管理工具-》数据源&#xff08;ODBC&#xff09;-》用户DSN-》添加”&#xff0c;未出现postgreSQL关联选项。…

Mysql ---Sqlserver数据迁移到Mysql(Mysql建表迁移数据)

1 试用了MysqlWorkBench的数据迁移功能 以为能实现&#xff1a;建立跟Sqlserver一样的表结构和视图的功能&#xff0c;sqlserver的数据迁移到mysql 实际上发现&#xff1a;即使勾选了表和视图&#xff0c;实际上却只能建立表结构。 视图结构&#xff0c;表数据&#xff0c;都没…

vscode 默认初始化_Visual Studio Code(vscode)使用介绍

[TOC]vscode 安装软件直接在vscode官网&#xff08;https://code.visualstudio.com/&#xff09;下载安装。建议将下图红框中勾选&#xff0c;安装完成后可通过鼠标右键打开vscode。安装界面使用介绍插件安装安装完成后&#xff0c;左侧栏可以看到不同模块&#xff0c;一开始包…