mySQL on copy,update ... IF statement Question

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mySQL on copy,update ... IF statement Question相关的知识,希望对你有一定的参考价值。

问题我似乎找不到明确的答案。当您执行mysql添加/或更新(如果重复)时,如果在更新字段上附加了IF语句,则该IF语句引用现有数据还是新数据?

即:

INSERT INTO images(image_id, image, description, image_owner, image_date) 
              VALUES(
              %d, 
              %s, 
              %s, 
              %s,
              NOW()) 
ON DUPLICATE KEY 
              UPDATE 
                image=%s, 
                description=%s,
                **image_owner=IF(description IS NULL, %s, image_owner), **
                image_date=NOW(), ...values for %s...);

因此,如果管理员来并编辑说明/图像但要确保功劳与原始用户保持一致,则基本上使用此方法。因此对于此部分:if(description IS NULL,..)部分是否检查与该记录相关的描述是否已在DB中为NULL,或者来自新更新的描述是否为NULL?

答案

在查询的UPDATE部分中,description引用表中的现有值。如果要使用查询的INSERT部分中的值,请使用VALUES(description)

以上是关于mySQL on copy,update ... IF statement Question的主要内容,如果未能解决你的问题,请参考以下文章

MYSQL 外键 ON DELETE 和 ON UPDATE

sql UPDATE ON DUPLICATE KEY造成MYSQL死锁现场

mysql ON DUPLICATE KEY UPDATE

MySQL外键约束On Delete和On Update的使用

mysql ON DUPLICATE KEY UPDATE ;

mysql中的ON DUPLICATE KEY UPDATE