MySQL和HSQLDB支持的唯一解决方案是查询要替换的行,并有条件地查询INSERT或UPDATE.这意味着您必须编写更多应用程序代码来补偿RDBMS实现之间的差异.

>开始交易.

> SELECT … FOR UPDATE.

>如果SELECT找到行,则UPDATE.

>其他,INSERT.

> COMMIT.

MySQL不支持ANSI SQL MERGE语句.它支持REPLACE和INSERT … ON DUPLICATE KEY UPDATE.有关详细信息,请参阅我对“INSERT IGNORE” vs “INSERT … ON DUPLICATE KEY UPDATE”的回答.

评论:是的,另一种方法是尝试INSERT并查看它是否成功.否则,请进行更新.如果您尝试INSERT并且它遇到重复键,它将生成错误,这在某些客户端接口中变为异常.在MySQL中执行此操作的缺点是,即使INSERT失败,它也会生成新的自动增量ID.所以你最终会有差距.我知道自动增量序列中的差距通常不值得担心,但是我去年帮助了一位客户,由于这种影响,成功插入之间的差距为1000-1500,结果是他们耗尽了范围. INT在他们的主键中.

正如@baraky所说,首先可以尝试更新UPDATE,如果这会影响零行,则执行INSERT.我对此策略的评论是,更新零行也不例外 – 您必须在UPDATE之后检查“受影响的行数”以了解它是否“成功”.

但是查询受影响的行数会使您回到最初的问题:您必须在MySQL和HSQLDB中使用不同的查询.

HSQLDB:

CALL DIAGNOSTICS(ROW_COUNT);

MySQL的:

SELECT ROW_COUNT();

mysql upsert语法_mysql – SQL标准UPSERT调用相关推荐

  1. mysql select语法_MySQL SELECT语法(一)SELECT语法详解

    SELECT的语法如下: SELECT[ALL | DISTINCT | DISTINCTROW ] [HIGH_PRIORITY] [STRAIGHT_JOIN] [SQL_SMALL_RESULT ...

  2. mysql数据库语法_MySQL数据库语法(一)

    MySQL数据库语法 数据库管理系统(DBMS)的概述 什么是DBMS:数据的仓库 方便查询 可存储的数据量大 保证数据的完整.一致 安全可靠 DBMS的发展:今天主流数据库为关系型数据库管理系统(R ...

  3. mysql cte 语法_MySQL CTE

    MySQL CTE 简介:在本教程中,您将学习如何使用MySQL CTE或公用表表达式以更易读的方式构造复杂查询. 从版本8.0开始,MySQL简单地引入了公用表表达式功能或CTE,因此您应在计算机上 ...

  4. mysql delete 语法_MySQL DELETE 语句

    MySQL DELETE 语句 你可以使用 SQL 的 DELETE FROM 命令来删除 MySQL 数据表中的记录. 你可以在mysql>命令提示符或PHP脚本中执行该命令. 语法 以下是S ...

  5. mysql upsert语法_Mysql - Upsert功能实现

    在看到了mongoTemplate的操作之后,觉得这种东西是很符合我们程序员世界的操作的,但是看到mysql的jdbc之后,瞬间一百万个小泥马从头飘过,所以就想自己实现一个mysql版本的upsert ...

  6. mysql特有语法_MySQL 独有SQL语法汇总(一)

    连接 主机名 端口 一个合法用户 用户口令 Mysql -u root -p -h myserver -P 9999 选择数据库 可使用USE关键字,mysql语言组成部分的一个关键字,绝不要使用关键 ...

  7. mysql cte 语法_MySQL 8.0 新增SQL语法对窗口函数和CTE的支持

    尝试了一下MySQL 8.0的部分新特性. 如果用过MSSQL或者是Oracle中的窗口函数(Oracle中叫分析函数), 然后再使用MySQL 8.0之前的时候,就知道需要在使用窗口函数处理逻辑的痛 ...

  8. mysql完成未完成_MYSQL SQL模式 (未完成)

    设置和查询SQL模式 通过修改sql_mode变量的值来改变SQL模式. SQL模式可以在全局级别下设置,也可以在会话级别下设置.在数据库启动时和数据库运行时都可以对sql_mode的值进行修改. 在 ...

  9. mysql 索引语法_MySQL 索引:语法及案例剖析

    MySQL 索引 MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度. 打个比方,如果合理的设计且使用索引的MySQL是一辆兰博基尼的话,那么没有设计和使用索 ...

  10. mysql解释器优化_MySQL——SQL性能分析优化利器之Explain

    系统性能的优劣取决于我们sql的查询速度,MySQL Explain命令是分析SQL性能及优化不可缺少的一部分. Explain被我们称为解释器,通过 explain 我们可以知道以下信息:表的读取顺 ...

最新文章

  1. Charles抓取https请求
  2. Go并发编程中的那些事[译]
  3. ES中搜索结果各属性说明介绍,以及搜索中的timeout机制讲解(来自学习资料,34节)
  4. Spring Cloud:查看注册到Eureka上的应用信息
  5. golang小程序试验(二)
  6. 在statspack显示完整的SQL
  7. java 新建 api 案列_Java利用webservice创建接口案例源码
  8. 分享一份 sublime 的个人配置文件
  9. md5加解密工具 java_MD5解密加密工具类
  10. 高等数学 极限存在 与 极限不存在
  11. 外地人如何买房落户武汉 武汉户口全解读
  12. 华为Mate S发布:余承东说要在圣诞季和三星、苹果正面开战---ESM
  13. 51单片机利用STC-ISP下载软件时串口打开失败怎么办?
  14. 教师计算机基础知识考试,教师计算机基础知识考核方案.doc
  15. 皕杰报表图表钻取超链接
  16. CloudComparePCL 点云点匹配(基于点到面的距离)
  17. Extreme Picture Finder(网络图片下载器)官方中文版V3.53.3 | 下载网页图片的软件 | 图片助手批量图片下载器
  18. unity画线之模拟小球抛物线运动轨迹
  19. UserWarning: mkl-service package failed to import, therefore Intel(R) MKL initialization ensuring it
  20. 企业区块链在2018年已经就绪

热门文章

  1. BZOJ 1933 Bookcase 书柜的尺寸
  2. [django]自定义标签和过滤器
  3. 洛谷 P1725 简单DP单调队列优化
  4. rocketmq 双主双从同步写安装部署
  5. extract-text-webpack-plugin---webpack插件
  6. Java面向对象 Main函数 静态的应用 单例设计模式
  7. [bbk4965] 第102集 -第13章 - 表空间管理 00
  8. asp.net mvc源码分析-Action篇 ParameterDescriptor
  9. 第六章 函数逼近-强化学习理论学习与代码实现(强化学习导论第二版)
  10. 复杂作业车间调度-单机调度问题研究