1 问题
在使用REPLACE INTO语句操作数据时,如果没有指定表的字段值丢失
2 原因
参看前人分析,这里不再累赘
https://www.cnblogs.com/monian/archive/2014/10/09/4013784.html
3 备忘
来源于前人分析中,文末的结论,特别记录
使用 REPLACE INTO 时最大的一个误区,未给字段值就「丢失」了,而通常这并非是业务上所预期的
更常见的需求实际上是:如果有冲突,更新已经明确指定的字段,其他未指定的字段则保持原状
而满足这一需求的 MySQL 官方说的是 INSERT INTO … ON DUPLICATE KEY UPDATE
鉴于此,很多使用 REPLACE INTO 的场景,实际上需要的是 ,在正确理解 REPLACE INTO 行为和副作用的前提下,谨慎使用 REPLACE INTO
官方说明
https://dev.mysql.com/doc/refman/8.0/en/replace.html
https://dev.mysql.com/doc/refman/8.0/en/insert-on-duplicate.html