如何一次更新2个mysql行?

问题描述:

例如,用户a给用户b $ 100,如何一次更新2个mysql行?

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

您可以创建存储过程,其将处理这个2次的更新,并与交易

+0

谢谢,我会杰福早上看这件事! – phpabuse 2011-04-02 02:19:50

+0

+1对于交易。汇款问题是交易的经典教科书场景 – Chris 2011-04-02 02:27:49

如果$ 100从“A”到“B”走出这将是明智的包起来,做如下。这有点丑陋,但它是可能的。两个sql语句可能更干净。接下来的家伙继承,你的代码会想知道为什么你这样做...... :)

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

感谢您的帮助。 – phpabuse 2011-04-02 02:27:06

+0

+1。我碰到过一个不错的方式! :-) – SuperSaiyan 2011-04-02 02:50:56

假设你有一个合理的新的MySQL版本(5.xi认为),你不使用MyISAM的, Transactions是你需要的。

事务基本上将多个sql语句组合在一起,然后允许您一次全部提交它们。如果任何语句引发错误,则事务将回滚。

交易成功或完全失败,所以在扣成功,但在入失败,你不能碰到的问题。

据我所知,MySQL的4.x版和MyISAM不支持事务,所以需要的MySQL 5.x和InnoDB的,但我不知道什么是当前的缺省数据库引擎MySQL使用。

+0

谢谢你。 – phpabuse 2011-04-02 02:33:42