PostgreSQL数据库解决不存在就插入数据,存在就更新这个单元格的数据

文章目录

解决方法

假如列1重复,就要更新列2,则使用sql:

sql 复制代码
INSERT INTO "public".表名称 ("列1", "列2")
VALUES('列1值','新的列2值') 
ON CONFLICT ("列1")
DO UPDATE SET "列2"= '新的列2值' -- 这里把col_2这一列的数据赋值为'5555'

示例程序

对于这样的数据,以"col_1"为主键,则新插入一个数据:

sql 复制代码
INSERT INTO "public".test_table ("col_1", "col_2")
VALUES('1','5555') 

会报错重复键违反唯一约束"col_1"

情况1:当存在数据时跳过,不操作

这时候sql语句是:

sql 复制代码
INSERT INTO "public".test_table ("col_1", "col_2")
VALUES('1','5555') 
ON CONFLICT (col_1) -- 这里是写法是 ON CONFLICT (重复列名称)
DO NOTHING; -- 这里是如果出现冲突的操作,不操作就写 DO NOTHING

情况2:当存在数据时,更新这个单元格

这时的sql语句是:

sql 复制代码
INSERT INTO "public".test_table ("col_1", "col_2")
VALUES('1','5555') 
ON CONFLICT (col_1)
DO UPDATE SET "col_2"= '5555' -- 这里把col_2这一列的数据赋值为'5555'

最后的数据为:

相关推荐
这个DBA有点耶1 小时前
函数索引的“完全一致”有多苛刻:写法、字符集、类型,差一处就失效
数据库·mysql·代码规范
星恒随风1 小时前
MySQL 从零入门(三):表的约束详解
linux·服务器·数据库·笔记·mysql
Alluxio2 小时前
Alluxio + OCI:为 AI 工作负载实现亚毫秒访问延迟与可扩展吞吐
运维·数据库·人工智能·分布式·缓存·ai·语言模型
数据库急诊室_阿哲6 小时前
一次加索引建议的复核记录:从报告到签字
数据库·ai数据库
青瓦梦滋7 小时前
Redis主从复制
服务器·数据库·redis·缓存·bootstrap
慧都小妮子7 小时前
Wyn商业智能国产数据库适配:数据接入、分析缓存与审计日志验证清单
数据库·数据分析·数据可视化·审计日志·商业智能
Joy T8 小时前
Redis Lua 原子限流:Lua 脚本、竞态条件与并发控制
数据库·redis·lua·限流·竞态条件·redis scripting
杨凯凡9 小时前
MySQL 死锁怎么排查?InnoDB 锁等待与 Spring Boot 整事务重试实战
数据库·spring boot·mysql
Aloudata9 小时前
Claude 做数据分析的这两年:一份复盘与发展线索
大数据·数据库·人工智能·数据挖掘·数据分析·dataagent
Decay__9 小时前
01_SQLServer 体系架构全解 —— 实例进程、关系引擎、SQLOS 与事务日志深入
运维·数据库·sql·mysql·架构