MySQL 插入,重复密钥更新

示例

INSERT INTO `table_name` 
    (`index_field`, `other_field_1`, `other_field_2`) 
    VALUES 
    ('index_value', 'insert_value', 'other_value') 
    ON DUPLICATE KEY UPDATE 
        `other_field_1` = 'update_value',
        `other_field_2` = VALUES(`other_field_2`);

这将INSERT成为table_name指定的值,但是如果唯一键已经存在,它将更新other_field_1使其具有新值。
有时,在更新重复键时,使用它很方便VALUES(),以便访问传递给的原始值,INSERT而不是直接设置该值。这样,您可以使用INSERT和  设置不同的值UPDATE。请参见上面的示例,其中other_field_1设置为insert_valueonINSERT或update_valueon,UPDATE而other_field_2总是设置为on other_value。

包含重复密钥更新(IODKU)起作用的关键是包含唯一密钥的模式,该信号将指示重复冲突。此唯一密钥可以是主密钥,也可以不是。它可以是单列上的唯一键,也可以是多列(复合键)。