概述

  个人认为这就是一个条件判断,而且是用在插入和更新上的条件判断。

当指定字段不冲突的时候执行插入语句,如果发生了冲突那么执行更新操作或者不操作。

简介(upset)

  在关系数据库中,术语 upsert 被称为合并(merge)。意思是,当执行 INSERT 操作时,如果数据表中不存在对应的记录,PostgreSQL 执行插入操作;如果数据表中存在对应的记录,则执行更新操作。这就是为什么将其称为 upsert(update or insert)的原因。

INSERT INTO table_name(column_list) VALUES(value_list) ON CONFLICT target action;

target 可以是:
  • (column_name……):一个字段名或多个字段名,但需要是再一个唯一索引下的字段
  • ON CONSTRAINT constraint_name:其中的 constraint_name 可以是一个唯一约束的名字
action 可以是:
  • DO NOTHING:当记录存在时,什么都不做
  • DO UPDATE SET column_1 = value_1, ……WHEREcondition:当记录存在时,更新表中的一些字段

注意,ON CONFLICT 只在 PostgreSQL 9.5 以上可用。

使用

INSERT INTO public.dg_client (id, code,secret)
VALUES (95, 'x5','123456')
ON CONFLICT (code) DO UPDATE SET secret='789456';
INSERT INTO public.dg_client (id, code, secret)
VALUES (95, 'x5', '123456')
ON CONFLICT ON CONSTRAINT dg_client_pk DO NOTHING;

PGSQL的on conflict相关推荐

  1. pgsql报错:User query might have needed to see row versions that must be removed.

    pgsql只读实例执行sql语句报错: ERROR: canceling statement due to conflict with recovery User query might have n ...

  2. on conflict的用法

    on conflict用法 欢迎关注蚕豆公众号,不定时分享技术.同时欢迎加入蚕豆技术群哦,扫描公众号点击关于作者加群~~~~ 今天给大家分享一下sql中的小知识(我用的是pgsql,mysql也同样有 ...

  3. 【PostgreSQL】ON CONFLICT语句

    概述 PgSQL中的insert语句可以通过ON CONFILICT来判断是否有唯一键冲突然后选择放弃插入操作,或者进行更新操作. 使用 INSERT INTO table_name(column_l ...

  4. java 连接 pgsql

    首先在jdbc的配置中新增pgsql的配置属性: pgsql.driverClassName=org.postgresql.Driver pgsql.url=jdbc:postgresql://12. ...

  5. CentOS6.9编译安装postgresql和php的pdo_pgsql,pgsql扩展

    1.安装依赖 yum install gcc gcc-c++ make readline-devel flex zlib-devel 2.下载源码,解压 创建源码存放目录 mkdir -p /usr/ ...

  6. 使用pg_stat_statement监控pgsql遇到的问题

    pg_stat_statements是PG中监控数据库活动的重要插件,通过它可以获得SQL的统计信息,例如该SQL被调用了多少次,返回了多少记录,在读写数据上花了多少时间,这个对于监控数据库很有帮助. ...

  7. pgsql 运行状态 采集脚本

    脚本来自德哥的github地址,https://github.com/digoal/pgsql_admin_script/blob/master/generate_report.sh 内容如下: #! ...

  8. pgsql数据库默认配置事务类型_PostgreSQL基础教程之:初始化配置

    PostgreSQL基础教程之:初始化配置 时间:2020-04-27 来源: PostgreSQL基础教程之:初始化配置 一.配置pg_hba.conf 先说明客户端认证配置文件pg_hba.con ...

  9. eclipse中同步代码PULL报错checkout conflict with files的解决方法

    eclipse中同步代码PULL报错checkout conflict with files的解决方法 参考文章: (1)eclipse中同步代码PULL报错checkout conflict wit ...

最新文章

  1. 【C语言】13-指针和字符串
  2. Leetcode 137. 只出现一次的数字 II 解题思路及C++实现
  3. 深入理解计算机系统结构——并发编程
  4. Oracle数据库使用Analyze提升sql性能
  5. 剑指offer重构二叉树 给出二叉树的前序和后序重构二叉树
  6. C++ function bind以及lamda表达式
  7. Fatal error: Call to undefined function randstr()
  8. 站内搜索 调用方法 (谷歌 百度 雅虎)
  9. 【转】PHP对象在内存中的分配
  10. 滤波算法(二)—— 中位值滤波算法
  11. python 官方中文文档(在线)
  12. 【深入理解RabbitMQ原理】RabbitMQ 相关问题总结--RabbitMQ 如何确保消息发送和消费?
  13. win32项目中使用 skia渲染的一个编译问题
  14. assuming drive cache: write through 处理
  15. fastposter 2.2.0 新版本发布 电商级海报生成器
  16. 元数据“人行横道”MC
  17. 来聊聊软件测试-静态测试
  18. CAS:1214891-99-2,BHQ猝灭剂BHQ-2 acid ,BHQ-2 Carboxylic Acid
  19. 【angular】ts2307: Cannot find module xxx
  20. 圆周率一千万亿位_圆周率已被算到60万亿位,继续算下去有何意义这里告诉你真正原因...

热门文章

  1. 函数式编程中的副作用概念
  2. 运行时错误 '-2147467259 (80004005)'
  3. IAR开发STM8S系列启动CMT2300A
  4. 华为AC+AP上线配置
  5. UEFI安装Win10/Ubuntu16.04双系统记录
  6. PTA 7-9 叶节点求和 (20 分)
  7. MarkDown笔记20200428
  8. linux 磁盘参数优化: barrier
  9. Vue Language Features (Volar) 会引起ts报错
  10. Shell脚本:循环for / while / until