可以同时执行两个或更多查询吗?

goo*_*ing 4 php mysql concurrency

好吧,假设我们有bank_account桌子.有一行叫money.它有2000个价值.我们有两个人试图撤回这笔钱,我们假设他们可以这样做.那么,他们有可能同时这样做吗?例如.有一个组成的代码:

 $all_money = get_value('money', 'bank_account); //lets suppose thats a function how we get value money from bank_account table

 if($all_money > 0) 
 {
     //here is a code where those money are being withdrawed from bank_account and inserting into the person's account
 }
Run Code Online (Sandbox Code Playgroud)

如果这两个人同时获得2,000,那么这意味着该条款if($all_money > 0)将被执行,并且两个玩家将获得2,000并且bank_account将具有-2,000的金钱价值.那么,有可能发生吗?如果是,那我该如何保护呢?谢谢.

Cri*_*ian 6

在访问表之前执行此操作:

LOCK TABLE table_name READ;
Run Code Online (Sandbox Code Playgroud)

这将锁定表.完成工作后,您可以致电:

UNLOCK TABLES;
Run Code Online (Sandbox Code Playgroud)