例如,用户a,为用户b提供100美元,
我是否必须执行单独的查询来更新每个用户的$,或者我可以在一个用户中执行此操作吗?
答案 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使用的当前默认数据库引擎是什么。