前言
在往数据库插入数据的时候,需要判断某个字段是否存在,如果存在则执行更新操作,如果不存在则执行插入操作,如果每次首先查询一次判断是否存在,再执行插入或者更新操作,就十分不方便。
有可能涉及事务或者锁,这样就变得复杂了。那么有没有什么简单的方法来实现更新插入操作呢?
ON DUPLICATE KEY UPDATE
这个时候可以给这个字段(或者几个字段)建立唯一索引,同时使用以下 sql 语句进行插入或更新操作:
INSERT INTO table_name (id, column1, column2) VALUES (NULL, value1, value2) ON DUPLICATE KEY UPDATE column1 = VALUES(column1) , column2 = VALUES(column2)
添加唯一索引
ALTER TABLE table_name ADD UNIQUE (column1,column2)
注意:如果没有唯一索引,则无法触发 ON DUPLICATE KEY 这样的事件,DUPLICATE 表示重复的意思,如某个字段没有添加唯一索引,则不认为插入同样的值是重复的,所以对不可重复的字段必须建立唯一索引。