该操作的实现原理是通过判断插入的记录里是否存在主键冲突来决定是插入还是更新,当出现主键冲突时则进行更新操作(使用 ON DUPLICATE KEY UPDATE 语句后面的参数),若无冲突则进行插入操作。
INSERT INTO tmp
(id,
name,
age )
VALUES
(1,
'hello',
24)
ON DUPLICATE KEY UPDATE
id = 1,
name = 'world',
age = 55
id为2不存在执行插入操作 存在执行更新操作
INSERT INTO tmp
(id,
name )
VALUES
(2,
'hello')
ON DUPLICATE KEY UPDATE
age = 55