on duplicate key update的使用

在操作数据库时,想完成,一条记录如果不存在则插入,如果存在则更新原有记录,如何实现?

首先看一下下面的数据库语句

insert into table_name (`column_a`,`column_b`) values ('value_a',value_b) on duplicate key update column_b = column_b + value_b;

与普通的insert into语句不同,在语句后面添加了 on duplicate key update …

如果只是看on之前的,他只是一个普通的插入语句

但是加上on之后,这个语句就变成了

如果值value_a或value_b存在于列column_a和column_b中,则不插入新数据,而在已存在的记录中执行更新操作,操作为column_a的值加value_b

这就是数据库的插入时如果不存在则插入,存在则更新记录的语句插入语句,

当然,不要心急,这个语句还需要一些条件才可以执行

如果column_a和column_b是可以存在重复值时,上面的语句仅是单纯的插入语句

想要让他更新,那就需要column_a或column_b是主键或者唯一索引

因为on duplicate key update语法的定义为:

    如果在INSERT语句末尾指定了ON DUPLICATE KEY UPDATE,并且插入行后会导致在一个UNIQUE索引或PRIMARY KEY中出现重复值,则在出现重复值的行执行UPDATE;如果不会导致唯一值列重复的问题,则插入新行。