数据库

首页 » 常识 » 预防 » MySQL有哪些实现方式何为插入,何为更
TUhjnbcbe - 2025/1/27 6:35:00

需求背景

环境

MySQL版本:5.7.20-log

开发规范

公司后端开发规范有这么一点:

更新数据库表中数据的时候,不允许先删,然后批量插入

需要将参与表中数据比判断,找出哪些是新插入,哪些需要更新,哪些是删除的,然后再做对应的数据操作

需求

我们有表如下:

当商品配送完后之后,需要记录它的最新配送价,若商品最新配送价已经存在则进行更新,不存在则执行插入

针对这个需求,我们有哪些实现方式?

代码处理

按开发规范中说的处理

通过代码在内存中进行数据处理,找出插入列表与更新列表,然后执行数据库操作

因为是很常规的插入与更新操作,所以这种处理方式适用于所有的关系型数据库

REPLACEINTO

当数据库是MySQL,碰到不存在则插入,存在则更新的需求时,第一时间往往想到的是REPLACEINTO

工作原理

replaceinto跟insert功能类似

不同点在于:replaceinto首先尝试插入数据到表中,如果发现表中已经有此行数据(根据主键或者唯一索引判断)则先删除此行数据,然后插入新的数据,否则直接插入新数据

replace语句会返回一个数,表示受影响的行的数目,该数是被删除和被插入的行数的和

我们来看个示例

对于示例结果,相信大家都能理解

需要强调的是:根据唯一索引uk_

1
查看完整版本: MySQL有哪些实现方式何为插入,何为更