【问题标题】:mysql - update two records at oncemysql - 一次更新两条记录
【发布时间】:2009-12-09 10:08:35
【问题描述】:

使用 PHP 的 msqli 是否可以一次查询更新两条记录?

首先我做一个 SELECT 来检查 $pay_user 在他的帐户中是否有足够的游戏币,如果他有,那么我执行以下操作...

我的更新查询是:

“更新帐户 SET money=money -”.$money。” WHERE User_id=".$pay_user

“更新账户 SET money=money +”.$money。”WHERE User_id=".$recieve_user

停止脏读是事务性的。

我希望保存一个查询并将其称为一个...这可能吗?

【问题讨论】:

  • 除了下面的事务答案之外,如果您的 user_id 列被索引,那么额外的查询应该几乎不会被注意到。
  • 不要太担心拼命减少查询数;你不会改进任何东西。

标签: php mysql mysqli


【解决方案1】:

由于两个 where 子句不相同,所以不能将这些查询合并到一个语句中。

您可以将其标记为 TRANSACTION,以便它们同时执行。

【讨论】:

    【解决方案2】:

    参考http://dev.mysql.com/doc/refman/5.0/en/update.html

    代码示例

    update account a1, account a2 
    set a1.money = a1.money - $money , a2.money = a2.money + $money
    where a1.user_id = $pay_user and a2.user_id = $recv_user
    

    【讨论】:

    • 非常巧妙的把戏。虽然为了 KISS 的利益,我可能不会使用它。
    【解决方案3】:

    我建议使用存储过程来执行此操作。这将是来自 php 的一个调用,如果它在中间失败,则 SP 应该发出回滚。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-07-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-02
      相关资源
      最近更新 更多