关于Mysql中REPLACE INTO未指明字段的值问题记录

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

猜你喜欢

转载自www.cnblogs.com/bysion/p/13396222.html