【问题标题】:Multiple update to the same row in database多次更新数据库中的同一行
【发布时间】:2012-07-08 20:09:33
【问题描述】:

我正在和一些朋友制作一个计费系统,它是这样工作的: 客户打电话。 客户挂断电话。 计算调用的价格。 通话费用从客户的信用额度中扣除。

我们决定进行以下操作: 获取用户的余额并将其存储在变量$balance中,然后执行$balance = $balance - $callprice,最后更新数据库。

问题是客户可以同时拨打电话,如果两个电话同时完成,并且其中一个在另一个脚本更新新余额之前获取数据库中的值......其中一个电话会迷路。我正在使用 php。

知道我该怎么做吗?

谢谢,对不起,我的英语很差...

【问题讨论】:

    标签: php mysql telephony multiple-tables


    【解决方案1】:

    问题是您似乎正在尝试使用两条 SQL 语句来更新用户的余额:一条到 SELECT 用户的余额,然后另一个到 UPDATE 使用 PHP 减去余额后的用户余额。

    您可以在一次操作中完成所有操作并消除竞争条件的可能性:

    UPDATE users
    SET balance = balance - <callprice here>
    WHERE user_id = <user_id here>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-05-09
      • 2011-11-19
      • 1970-01-01
      • 1970-01-01
      • 2017-11-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多