Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何一次更新2行mysql?_Php_Mysql - Fatal编程技术网

Php 如何一次更新2行mysql?

Php 如何一次更新2行mysql?,php,mysql,Php,Mysql,例如,用户a给用户b 100美元 我是否需要执行单独的查询来更新每个用户的$,或者我可以一次完成吗?您可以创建存储过程来处理这两个更新,并用明智的事务将其打包您可以创建存储过程来处理这两个更新,并用明智的事务将其打包如果$100从“a”变为“b”,请执行以下操作。这有点难看,但这是可能的。两条sql语句可能要干净得多。下一个继承你代码的人会想知道你为什么这么做…:) 如果100美元从“a”变为“b”,请执行以下操作。这有点难看,但这是可能的。两条sql语句可能要干净得多。下一个继承你代码的人会想

例如,用户a给用户b 100美元


我是否需要执行单独的查询来更新每个用户的$,或者我可以一次完成吗?

您可以创建存储过程来处理这两个更新,并用明智的事务将其打包

您可以创建存储过程来处理这两个更新,并用明智的事务将其打包

如果$100从“a”变为“b”,请执行以下操作。这有点难看,但这是可能的。两条sql语句可能要干净得多。下一个继承你代码的人会想知道你为什么这么做…:)

如果100美元从“a”变为“b”,请执行以下操作。这有点难看,但这是可能的。两条sql语句可能要干净得多。下一个继承你代码的人会想知道你为什么这么做…:)


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

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

交易要么成功,要么完全失败,因此您不会遇到扣除成功,但贷记失败的问题


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

假设您有一个合理的新MySQL版本(我认为是5.x),并且您没有使用MyISAM,这就是您需要的

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

交易要么成功,要么完全失败,因此您不会遇到扣除成功,但贷记失败的问题


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

谢谢,我会在早上查找这个+1用于交易。汇款问题是交易的经典教科书场景谢谢,我会在早上查这个+1用于交易。转账问题是交易的经典教科书场景
update account
set value = value + if(user='a', -100, 100)
where user in ('a', 'b');