ON CONFLICT 只在 PostgreSQL 9.5 以上可用

PostgreSQL 的 upsert 功能就是当执行 INSERT 操作时,如果数据表中不存在对应的记录,PostgreSQL 执行插入操作;如果数据表中存在对应的记录,则执行更新操作。这就是为什么将其称为 upsert(update or insert)的原因。

<update id="updatePersonInfo"  paramterType="com.test.pojo.Person">insert into person(name,age,hobby,city,school,mobile)values(#{name},#{age},#{hobby},#{city},#{school},#{mobile})on conflict(mobile,name) do nothing</update>

这里的on conflict( )括号里面必须是唯一索引,所以此处的mobile和name必须是联合唯一索引  do nothing  则表示如果有相同数据存在,则不做任何操作,原数据保持不变

<update id="updatePersonInfo"  paramterType="com.test.pojo.Person">insert into person(name,age,hobby,city,school,mobile)values(#{name},#{age},#{hobby},#{city},#{school},#{mobile})on conflict(mobile,name)do updateset city='上海',school='复旦'
</update>

这里的on conflict 后面的do update 则表示如果存在以 mobile和name为唯一索引的重复数据,则做更新操作 city='上海',school='复旦'

<update id="updatePersonInfo"  paramterType="com.test.pojo.Person">insert into person(name,age,hobby,city,school,mobile)values(#{name},#{age},#{hobby},#{city},#{school},#{mobile})on conflict(mobile,name)do updateset city='上海',school='复旦'whereperson.name='章程'
</update>

这里的update则有限制条件where person.name='章程'

PostgreSQL的upsert功能(on conflict do)的用法相关推荐

  1. 【PostgreSQL】PostgreSQL的upsert功能(insert on conflict do)的用法

    PostgreSQL 的 upsert介绍及语法 PostgreSQL 的 upsert 功能:当记录不存在时,执行插入:否则,进行更新. 注意: ON CONFLICT只在 PostgreSQL 9 ...

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

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

  3. 数据库:PostgreSQL:基础功能使用介绍

    作为传统开源数据库的坚定支持者,PostgreSQL在数据库领域中一直有不错的名声,在TOP DB index指数中也基本上是在第五的位置.由于考虑到Oracle.MySQL和SQL Server常年 ...

  4. PostgreSQL SQL中的ALL,ANY,SOME的用法,sql查询速度优化,sql运行优化

    PostgreSQL SQL中的ALL,ANY,SOME的用法,sql查询速度优化,sql运行优化 准备两个表: --T1(2,3) --T2(1,2,3,4)--ALL,ANY,SOME 的子查询 ...

  5. Postgres访问其他PostgresQL数据库的功能DBLINK

    2019独角兽企业重金招聘Python工程师标准>>> 有时候的业务需要参照其他数据库的数据. 我们可以在程序中分别从两个数据库中取值然后处理.但这样开发效率和性能都不是很好. 如果 ...

  6. PostgreSQL的 array_to_string 功能

    开始 用 第二个参数连接数组元素,例: postgres=# select array_to_string (ARRAY[1,2,3],'##');array_to_string ---------- ...

  7. oracle数据库instr用法,postgresql instr函数功能实现(实现oracle plsql instr相同功能)

    -- 实现1 CREATE FUNCTION instr(varchar, varchar) RETURNS integer AS $$ DECLARE pos integer; BEGIN pos ...

  8. PostgreSQL 数据库中 DISTINCT 关键字的 4 种用法

    文章目录 DISTINCT DISTINCT ON IS DISTINCT FROM 聚合函数与 DISTINCT 大家好,我是只谈技术不剪发的 Tony 老师.PostgreSQL 不但高度兼容 S ...

  9. linux进程snprintf函数功能,linux 之 snprintf函数用法

    int snprintf(char *restrict buf, size_t n, const char * restrict  format, ...); 函数说明:最多从源串中拷贝n-1个字符到 ...

最新文章

  1. Docker周报:Windows Server将支持Mesos
  2. 遏制企业数据泄露之殇,大咖切磋云安全的攻防之道
  3. mybatis 动态 SQL 官方文档
  4. Eclipse启动之一:外壳程序(百度空间迁移)
  5. ElasticSearch入门教程--安装
  6. Linux下SSH Session复制
  7. cocoapods 详尽使用
  8. C#解析JSON字符串总结(转载)
  9. 亲自体验了vscode网页版开发代码并提交代码到github代码库,发现出奇的流畅,手机和平板也可以很愉快的编写代码了
  10. SDUT 第十届校赛H menhera酱那惨不忍睹的数学 (二分图匹配)
  11. linux命令sm,Linux系统命令和使用技巧8则
  12. CNN Explainer
  13. 南宁计算机职称考试网,南宁人事考试职称网
  14. 【Android之SmartImageView图片控件】
  15. 郑州大学计算机系1996级校友,公共管理学院成功举办96级公共关系专业学生毕业20周年返校活动...
  16. 思维导图 · B端业务的难点
  17. IBM推出量子AI平台IBM z16
  18. 几种等等概率抽样方法
  19. 12个摄影发烧友必知的常识
  20. JDK7.0下载地址

热门文章

  1. git上传很多文件报错解决
  2. Jenkins里的Crumb
  3. mv单位是什么意思_ayawawa经常说的pu MV是什么意思 怎么mv是什么意思算
  4. TSINGSEE青犀视频云-边-端架构视频智能分析平台EasyNVR如何实现直播地址和录像地址统一
  5. terraform 腾讯云_使用Terraform优化云成本的权威指南
  6. https://ipcrs.pbccrc.org.cn/
  7. 英文文献翻译(白嫖版)
  8. 微信小程序 常用组件
  9. 多IP服务器怎么样?多IP服务器有什么优势?
  10. 常见的设计模式和应用场景