一、背景 业务上经常有这样的场景,存在进行更新,不存在进行新增。 用过主键或唯一索引对数据库进行判断是否存在,再根据结果进行insert或update。这样处理效率低,若并发比较高时会引起数据问题。 二、概述 为了解决这种业务场景,Mys
业务上经常有这样的场景,存在进行更新,不存在进行新增。
用过主键或唯一索引对数据库进行判断是否存在,再根据结果进行insert或update。这样处理效率低,若并发比较高时会引起数据问题。
insert into …… on duplicate key update
)。应用这种语法,一条sql语句实现插入或更新,可单条可批量。on duplicate key update 与 replace into
1、创建表
CREATE TABLE table_user( id BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '主键', name VARCHAR(64) NOT NULL COMMENT '名称', sex VARCHAR(4) NOT NULL COMMENT '性别', age INT NOT NULL COMMENT '年龄', created_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', modified_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (id), UNIQUE KEY uniq_name (name));
2、现有数据
1.3、on duplicate key update 插入或更新数据
insert into table_user (name, sex, age) values ('小红', '1', 12) on duplicate key update sex=values(sex), age = values(age);
1.4、执行后结果
1、 单条insert或update
int saveOrUpdate(tableUser tableUser);
insert into table_user (name, sex, age) values (#{name,jdbcType=VARCHAR}, #{sex,jdbcType=VARCHAR}, #{age,jdbcType=INTEGER}) on duplicate key update sex=values(sex), age=values(age)
2、批量insert或update
int batchSaveOrUpdate(List tableUserList);
insert into table_user (name, sex, age) values (#{tableUser.name,jdbcType=VARCHAR}, #{tableUser.sex,jdbcType=VARCHAR}, #{tableUser.age,jdbcType=INTEGER}) on duplicate key update sex=values(sex), age=values(age)
来源地址:https://blog.csdn.net/weixin_44991038/article/details/128339904
--结束END--
本文标题: MYSQL的 on duplicate key update实现插入或更新操作
本文链接: https://www.lsjlt.com/news/406525.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-05-14
2024-05-14
2024-05-14
2024-05-14
2024-05-14
2024-05-14
2024-05-14
2024-05-14
2024-05-14
2024-05-14
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0