INSERT ... ON DUPLICATE KEY UPDATE

把放很久的文章整理出來。

這裡看到 4.1 之後的版本可以有 INSERT ... ON DUPLICATE KEY UPDATE 這種用法:MySQL Counters。引用的原文在 INSERT ON DUPLICATE KEY UPDATE and summary counters. 這篇。

如果你對於 race condition 有瞭解,你可以在文章裡看到這種用法將本來要自己做的檢查交給 處理:

INSERT INTO ipstat VALUES(inet_aton('192.168.0.1'), 1, now()) ON duplicate KEY UPDATE hits = hits + 1;

這個功能在 4.1 以及之後的版本有提供。

5 thoughts on “INSERT ... ON DUPLICATE KEY UPDATE”

  1. 我尝试用这个sql 来解决一些问题
    但是在试试 后面的 update 是 这样子

    update set cnt = cnt + 1 , dateline = now()

    的时候,cnt 可以正确加1,但是后面的dateline 似乎没有改变……

Leave a Reply

Your email address will not be published. Required fields are marked *