如何一次更新2个mysql行?

时间:2011-04-02 02:13:18

标签: php mysql

例如,用户a,为用户b提供100美元,

我是否必须执行单独的查询来更新每个用户的$,或者我可以在一个用户中执行此操作吗?

3 个答案:

答案 0 :(得分:3)

你可以创建存储过程来处理这2个更新并用事务包装它是明智的

答案 1 :(得分:1)

如果$ 100从“a”变为“b”,请执行以下操作。这有点难看,但有可能。两个sql语句可能更清晰。继承你的代码的下一个人将想知道你为什么这样做...:)

update account
set value = value + if(user='a', -100, 100)
where user in ('a', 'b');

答案 2 :(得分:0)

假设您有一个相当新的MySQL版本(5.x我认为)并且您没有使用MyISAM,Transactions就是您所需要的。

事务基本上将多个sql语句组合在一起,然后允许您一次提交所有这些语句。如果任何语句抛出错误,则回滚事务。

交易成功或完全失败,因此您无法遇到扣减成功但信用失败的问题。

AFAIK,MySQL 4.x和MyISAM不支持事务,因此需要MySQL 5.x和InnoDB,但我不确定MySQL使用的当前默认数据库引擎是什么。