mysql查询是否存在某条记录,不存在则插入,存在则更新

作者:超级无敌大飞   阅读 (3399)  |  收藏 (0)  |  点赞 (0)

摘要

在工作中,会遇到这样的情形,查询数据库中是否存在一条记录信息,如果不存在则插入一条新的信息,如果存在,则更新已有的信息。


原文链接:mysql查询是否存在某条记录,不存在则插入,存在则更新

面对这样的需求,之前采用的是先读取一遍数据库,判断是否有数据,如果没有则插入一条新信息,如果有,则更新已有信息,但是这种做法在高并发情况下可能存在多个线程查询时都没有数据,于是都往数据库中插入新的记录,在插入时则会抛出异常(说该信息已在数据库中)。
后来发现,在Mysql的语法中其实提供了这么一种操作,能够完成这样的任务。语法如下:
INSERT ... ON DUPLICATE KEY UPDATE field1=value1, field2=value2,..., fieldn=valuesn;
这样的语句在执行时作为一个原子操作执行,如果数据库中没有该条记录,则插入,如果有,则更新这些字段(field1=value1, field2=value2,..., fieldn=valuesn);需要说明的是,数据库表必须含有一个唯一的索引,通过该索引来标记是否存在该条记录。
以后如果遇到类型的需求,可以使用该语句,避免在程序中进行相应的逻辑判断;另外提醒一下,后面的字段赋值语句是用逗号“,”隔开哦,而不是用使用"and"逻辑连接词,如“field1=value1 and field2=value2 and fieldn=valuesn“。
分类   Spring 管理
字数   523

博客标签    mysql 判断数据是否存在  

评论