今天用ibatis写个插入操作,为了兼容修改想使用 merge into语句,以便重复插入时直接 update,具体语句如下:

<insert id="wlf">MERGE INTO t_wlf_info t USING dual ON(t. id=#id# and t.channel=#channel#)WHEN MATCHED THEN UPDATE SET t.id=#id#,t.channel=#channel#,t.url=#url#WHEN NOT MATCHED THEN INSERT t_wlf_info(id,channel, url) VALUES(#id#,#channel#,#url#)</insert>

  结果遇到了两个问题:

1、java.sql.BatchUpdateException:ORA-00926: missing VALUES keyword

...

2、java. sql.BatchUpdateException: ORA-38104: Columns referenced in the ON Clause cannot be updated: "T"."ID"

...

  第一个问题是在插入时多加了表明,在INSERT后面把表名去掉就好,另外提一点,update和insert后面都不需要加表明的,另外insert后面也不用加INTO,merge into的语法就是这样的。第二个问题是不能把ON后面的条件字段放到update里,它认为你拿id和channel做条件来判断是插入还是修改,如果匹配那么id和channel已经是相应的值了,就没去修改了,举例id=3 and channel=12345678时我去update,否则insert,那么匹配update时被修改的数据已经是id为3、channel为12345678了,这两个字段就不用update了。

转载于:https://www.cnblogs.com/wuxun1997/p/6602202.html

merge into报错ORA-00926、ORA-38014相关推荐

  1. oracle 报错01427,Oracle ORA错误

    1.ORA-64203 执行代码:to_char(content) 错误如下:ORA-64203: 目标缓冲区太小, 无法容纳字符集转换之后的 CLOB 数据. 报错原因:在网上查询了一下,应该是由于 ...

  2. Git Pull Failed Your local changes would be overwritten by merge.(git报错)

    在你pull的时候发现pull失败,因为本地有修改,所以有两种解决方式: 1. 将修改暂存,保留修改 $ git stash //暂存当前正在进行的工作. $ git pull //拉取服务器的代码 ...

  3. ORACLE MERGE INTO语句,unable to get a stable set of rows in the source tables报错解决

    ORACLE数据库,MERGE INTO语句,经常会出现  ORA-30926: unable to get a stable set of rows in the source tables   这 ...

  4. 解决Git报错:error: You have not concluded your merge (MERGE_HEAD exists).

    Git 解决Git报错:error: You have not concluded your merge (MERGE_HEAD exists). 开发新业务,拉取代码时,路由文件发生冲突,解决此文件 ...

  5. svn服务器创建分支原理,svn 创建分支、合并分支、以及报错处理

    Q:为什么要分支? A:项目开发一个迭代之后,在开发一个迭代之前,一般都是需要给项目设置分支,独立保存上一个版本的代码.这样有什么好处呢?比如说:开始下一个迭代,开发到一半的时候,发现上一个版本有一个 ...

  6. git revert回滚merge提交时报错(commit xxx is a merge but no -m option )

    git revert 回滚merge提交 报错内容: $ git revert 788bab4 error: commit 788bab4021fe14db3a0865aa55fd1b798b74c2 ...

  7. 05 ORA系列:ORA-01013 报错用户请求取消当前的操作

    如果希望对常见的Oracle异常ORA报错解决方案有系统的了解,请看<ORACLE系列异常总结ORA>. java.sql.SQLTimeoutException: ORA-01013: ...

  8. oracle 增加ora容量_案例:Oracle报错ORA-01144 详解数据文件大小32GB的限制的原因

    天萃荷净 Oracle数据文件大小的限制,运维DBA在向Oracle数据库添加一个32G的数据文件的时候报错ORA-01144,分析原因为数据库针对文件有32G限制 1.添加数据文件报错ORA-011 ...

  9. oracle ora 00283,【案例】Oracle报错ORA-16433非归档丢失redo无法启动的恢复过程

    天萃荷净 Oracle研究中心案例分析:运维DBA反映Oracle数据库处理非归档模式,redo文件损坏常规修复无法正常open数据库. 本站文章除注明转载外,均为本站原创: 转载自love wife ...

最新文章

  1. 怎么把本地项目和远程git仓库相连通
  2. anaconda python降级_anaconda 使用的一些体验与困惑
  3. mysql dump sql文件_用mysqldump导出sql文件的问题。
  4. 跟着书本重学CSS(1)
  5. 统计学习方法 学习笔记(十):决策树
  6. python数据处理与机器学习
  7. 使用OnCtlColor函数消息打造背景
  8. 设计模式(一)---简单工厂模式
  9. 徐明星解读区块链与物联网的重要联系
  10. How to add svn:externals in windows using TortoiseSVN
  11. php curl模拟post请求提交数据
  12. Excel为图表添加趋势线和公式
  13. 设计模式——终结者模式
  14. 向日葵远程控制第一人称3D鼠标无法操作旋转问题
  15. 2.(leaflet篇)leaflet加载接入百度地图
  16. Spring Boot @DeleteMapping(转)
  17. VC浏览器相关的学习(六)(IDispEventImpl包装的主要方法)
  18. Qt5.14.2下载与安装
  19. 比你拼命的人多的是,最可怕的是比你牛的人比你还拼命(每天看一段一个月刚刚好)
  20. C#版谷歌地图下载器设计与实现

热门文章

  1. 还在迷茫于前端如何入门和进阶?万字指南让你不再迷茫!
  2. mysql产生大量数据_mysql语句批量产生大量测试数据
  3. cookielifetime php_PHP session有效期session.gc_maxlifetime的设置方法
  4. java绘制图形_Java绘制图形
  5. 在Linux添加网卡,Centos(RHEL) 6 添加网卡的方法
  6. 在plc中用c语言实现电梯控制程序,三菱FX2N PLC电梯运行控制程序设计
  7. NYOJ-疯牛(贪心)
  8. Qt 串口通信 高速发送出错的解决方法总结
  9. Vsftpd 虚拟用户配置参考---终极版
  10. 鸭子类型duck typing(动态)