【PostgreSQL】PostgreSQL的upsert功能(insert on conflict do)的用法
PostgreSQL 的 upsert介绍及语法
PostgreSQL 的 upsert 功能:当记录不存在时,执行插入;否则,进行更新。
注意: ON CONFLICT
只在 PostgreSQL 9.5 以上可用。
INSERT INTO table_name(column_list) VALUES(value_list)
ON CONFLICT target action;
target 可以是:
- (column_name):一个字段名
- ON CONSTRAINT constraint_name:其中的 constraint_name 可以是一个唯一约束的名字
- WHERE predicate:带谓语的 WHERE 子句
action 可以是:
- DO NOTHING:当记录存在时,什么都不做
- DO UPDATE SET column_1 = value_1, … WHERE condition:当记录存在 时,更新表中的一些字段
实际操作
建表导入模拟数据
drop table if exists "test"."goods";
create table "test"."goods" ("store_cd" int4 not null,"good_cd" varchar(50) not null,"name" varchar(255)
);alter table "test"."goods" add constraint "pr_cd_key" primary key ("store_cd", "good_cd");
insert into "test"."goods" values (101, '1', '张三');
insert into "test"."goods" values (102, '2', '李四');
insert into "test"."goods" values (103, '3', '王五');select * from "test"."goods";
数据存在则更新数据,不存在则插入数据
通过指定约束名称进行upsert
insert into test.goods values ( 104, '4', '赵六' )
on conflict on constraint pr_cd_key do
update set name = '更新'
wheregoods.store_cd = '104' and goods.good_cd = '4'
;
通过指定唯一键字段进行upsert
insert into test.goods values ( 104, '4', '赵六' )
on conflict ( store_cd, good_cd ) do
update set name = '更新'
wheregoods.store_cd = '104' and goods.good_cd = '4'
;
数据存在即不做任何操作,数据不存在则插入
insert into test.goods values ( 104, '4', '赵六' )
on conflict on constraint pr_cd_key do nothing
;
【PostgreSQL】PostgreSQL的upsert功能(insert on conflict do)的用法相关推荐
- PostgreSQL的upsert功能(on conflict do)的用法
ON CONFLICT 只在 PostgreSQL 9.5 以上可用 PostgreSQL 的 upsert 功能就是当执行 INSERT 操作时,如果数据表中不存在对应的记录,PostgreSQL ...
- Postgresql源码(66)insert on conflict语法介绍与内核执行流程解析
相关: <Postgresql源码(66)insert on conflict语法介绍与内核执行流程解析>) <Postgresql源码(70)逻辑复制DecodeXLOG主要流程和 ...
- PostgreSQL 10.0 preview 功能增强 - 后台运行(pg_background)
标签 PostgreSQL , 10.0 , 后台运行 , pg_background_launch , pg_background_result , pg_background_detach , p ...
- PostGreSQL语法及高级功能(2022-06-08补充中)
PostGreSQL语法及高级功能 1 createdb ## 首先查看help root@dd50f020b9f4:/# createdb --help createdb creates a Pos ...
- IDEA2019 Java连接PostgreSQL数据库实现基础功能增删改查
IDEA2019 Java连接PostgreSQL数据库实现基础功能增删改查 注意: 每个方法对应单个java类,可以自行进行整理汇总到一个类中 一.Java通过JDBC连接到PostgreSQL数据 ...
- PostgreSQL数据库远程连接功能的开启
PostgreSQL数据库远程连接功能的开启 需要修改连个配置文件,默认位于 安装目录的data子文件夹下. 1.postgresql.conf 修改成监听所有ip地址的连接请求,如下: listen ...
- Hologres INSERT ON CONFLICT
INSERT ON CONFLICT 现有一个业务需求:需要根据关联关系,用B表的数据修改A表中的一个字段. 当看到这个需求的时候,我首先想到的是常用的DB中那种UPDATE...JOIN...的语法 ...
- Oracle Sql技巧 - Upsert, Multitable Insert, Undrop
近期参加OCP培训,讲师说的太快,之前一直是SQLSERVER,很多东西要恶补了. UpSert功能: MERGE <hint> INTO <table_name> USING ...
- mysql upsert语法_Mysql - Upsert功能实现
在看到了mongoTemplate的操作之后,觉得这种东西是很符合我们程序员世界的操作的,但是看到mysql的jdbc之后,瞬间一百万个小泥马从头飘过,所以就想自己实现一个mysql版本的upsert ...
最新文章
- 【No.5 类型转换导致的错误】
- CSS:给 input 中 type=text 设置CSS样式
- Bitcoin0.21版 公链开发(1) Bitcoind 、Bitcoin-qt编译
- 详细解释CNN卷积神经网络各层的参数和链接个数的计算
- 云炬60s看世界20211205
- 【视频】vue指令v-on绑定事件
- 形态学图像处理(二)
- python读取log文件生成图形表_python提取log文件内容并画出图表
- svm gui安装 matlab,svm_matlab_gui 支持向量机matlab工具箱(含资料及gui模式)用于分类和回归预测 - 下载 - 搜珍网...
- Hash Table in C
- 学习嵌入式和单片机有没有必要,价值体现在哪
- 飞机游戏跟踪导弹的算法[C#源码]
- 淘宝宝贝类目怎么更换?
- 大学入学计算机基础考试考什么,大学入学考试计算机基础考试.docx
- 小丸工具箱压制字幕注意
- 网页无法复制文字,一个插件解决问题!!!!
- 基于二维码的室内定位技术(二)——实现
- 在Redhat9上安装Oracle 9.2
- 一个假猪套神器:NET CAT-NC
- 字符串转成正则表达式