当前位置:  开发笔记 > 后端 > 正文

如果更新失败,MySQL函数插入记录?

如何解决《如果更新失败,MySQL函数插入记录?》经验,为你挑选了0个好方法。

我正在研究的系统的一部分涉及登录mysql,计数经常更新.

插入的数据格式如下:

   date    | name | count |
-----------+------+-------+
2009-01-12 | alan |   5   |
2009-01-12 | dave |   2   |
2009-01-12 | mary |   1   |

这些数据定期从平面文件中解析,如上所述,为db插入/更新做准备 - 数据库上的唯一键是该(date, name)对.

以前,此系统会检查现有表中是否有给定的记录 datename在决定更新或插入和对的.

我们遇到的问题是,随着这个表的增长,响应时间没有变得更好,我们希望尽可能减少查询数量.

该系统最近更新为运行一个INSERT ... ON DUPLICATE KEY UPDATE查询,这减少了selects 的数量,但我们的常见情况是一定距离是update.

我想知道是否有人知道一个基本上INSERT ... ON DUPLICATE KEY UPDATE是反向的mysql函数,即将尝试更新一行,如果没有匹配则执行插入?


编辑

我上面没有说清楚,当我有记录时我想做什么 ('2009-01-12','alan','5')例如,是:

UPDATE table SET count = count+5 WHERE date = '2009-01-12' and name = 'alan';

如果上述操作失败,请插入以上数据.增加一个计数器的需要是为什么REPLACE不起作用.替换执行删除和插入,并且不允许您引用要删除的行,因此count = count + 5不会将先前的count值增加5.

@jasoncohen - INSERT ... ON DUPLICATE KEY UPDATE确实可以完成这项工作,但我想问是否有更优化的方法来做到这一点.

抱歉由于原始措辞不佳导致的任何混乱!

推荐阅读
Life一切安好
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有