前言
有时候我们会在项目中遇到数据插入更新问题,例如往数据库插入一条数据时候,如果数据库中存在这条数据就进行更新,如果不存在就进行插入操作,很多人的做法是分两步先进行查询,然后再进行插入操作,这样显得不够优雅,本次我们通过mysql的ON DUPLICATE KEY UPDATE 实现一次操作就可以实现插入更新。
语法介绍
ON DUPLICATE KEY UPDATE 其中DUPLICATE 的英文语义是完全一样的,key代表唯一键,翻译过来就是如果有完全一样的的唯一键插入就使用UPDATE操作。该语法用于在执行INSERT操作时,如果遇到重复的唯一键值(即主键或唯一约束字段),就将INSERT转变为UPDATE操作,而不是抛出错误。这样可以避免因插入重复记录而引发的异常,同时实现数据的更新。其基本用法如下:
INSERT INTO table_name (column1, column2, ..., columnN)
VALUES (value1, value2, ..., valueN)
ON DUPLICATE KEY UPDATE
columnA = valueA,
columnB = valueB;
注释:
1、table_name:表名
2、column1, column2:列名
3、value1, value2:与列对应的值
4、columnA = valueA:要更新的字段名和字段值
示例:
1、将数据插入people表,如果有就更新,没有就插入
insert into people values (1,'你住过的屋檐',18)
ON DUPLICATE KEY UPDATE
name = '神话',
age = 30
2、执行前表数据是空的
3、执行sql
查询数据成功插入一条
4、再执行一次sql,预期name和age会修改而不是新增一条数据
符合预期,数据库中只有一条记录,并且第二次执行sql时只是进行了修改
结束撒花,欢迎订阅!