美文网首页我爱编程
mysql 中 insert on duplicate key

mysql 中 insert on duplicate key

作者: wuyuan0127 | 来源:发表于2018-05-25 10:29 被阅读0次

    如果有一个需求:

    首先要插入数据库,如果数据库已经存在 同一主键的记录,则执行 update操作,比如 修改 modifyTime时间

    如果不存在就 insert 记录

    平常都是先查询,存在就更新,不存在就insert  但是插入加上 insert 或者 update 不是 原子操作. 并发的时候就会有问题.

    而  insert on duplicate key update 就是原子操作

    update返回的操作记录数是2    insert是1

    INSERT INTO t1 (a,b,c) VALUES (1,2,3),(4,5,6) ON DUPLICATE KEY UPDATE c=VALUES(a)+VALUES(b);

    坑:

    insert on dullicate key update的注意事项 此特性用于判断数据是插入还是更新。 但是要注意 如果update的内容没有变化,数据库返回的影响行数是1,而不是2。 因此利用此特性来解决消息幂等性时,要注意加上modify_time字段,此modif_ytime最好基于数据库函数now()来生成。不建议使用消息体的时间戳。 如果忽略此事项,容易踩大坑。

    mysql官方举例:

    https://dev.mysql.com/doc/refman/5.7/en/insert-on-duplicate.html

    相关文章

      网友评论

        本文标题:mysql 中 insert on duplicate key

        本文链接:https://www.haomeiwen.com/subject/ufsyjftx.html