之前写ibatis要实现saveorupdate都是在业务上进行控制,发现mysql 的replace into 语句支持类似的功.
原理是根据唯一索引去判断新插入数据合法性,合法(不存在)则插入,存在则删除.
这在自增主键情况下会使autoincrement +2, 并且原来的数据全部清空存在数据不安全的隐患.
后来又看到了
INSERT INTO TABLE (a,b,c) VALUES
(1,2,3),
(2,5,7),
(3,3,6),
(4,8,2)
ON DUPLICATE KEY UPDATE b=VALUES(b);
也是根据唯一索引去判断,存在冲突则执行update
有这两个mysql的语法,实现saveorupdate可以更方便安全一些