LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

SQL 防重复插入:MySQL 与 PostgreSQL 的 Upsert 对照

freeflydom
2026年2月5日 15:48 本文热度 132

一句话承诺:一张对照表 + 两段语法,让你快速写出“有则更新,无则插入”。


插入数据
是否存在唯一键冲突?
正常INSERT
走UPSERT更新

语法对照表

数据库语法示例
MySQLINSERT … ON DUPLICATE KEY UPDATE依据唯一索引
PostgreSQLINSERT … ON CONFLICT (…) DO UPDATE指定冲突目标

MySQL 示例

CREATE TABLE users (
  id BIGINT PRIMARY KEY,
  email VARCHAR(255) UNIQUE,
  name VARCHAR(64)
);
INSERT INTO users (id, email, name)
VALUES (1, 'a@ex.com', 'Alice')
ON DUPLICATE KEY UPDATE name=VALUES(name);

PostgreSQL 示例

CREATE TABLE users (
  id BIGINT PRIMARY KEY,
  email TEXT UNIQUE,
  name TEXT
);
INSERT INTO users (id, email, name)
VALUES (1, 'a@ex.com', 'Alice')
ON CONFLICT (email) DO UPDATE SET name=EXCLUDED.name;

少量解释

  • 选对冲突列:通常使用唯一索引列(如 email)。
  • PG 的 EXCLUDED 引用待插入行;MySQL 的 VALUES(…) 引用插入值。

常见坑与替代法

  • 坑:更新字段遗漏导致部分数据旧值保留。替代:明确列清单。
  • 坑:并发高导致锁冲突。替代:必要时改为批量或队列处理。

转自https://blog.csdn.net/lxcxjxhx/article/details/153815053


该文章在 2026/2/5 15:48:07 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2026 ClickSun All Rights Reserved