MySQL并发更新

时间:2018-06-21 09:04:03

标签: mysql

我有小型POS系统,服务器端使用PHP和MySql(InnoDB)。 完成“销售”后,将执行以下查询以更新库存数量:

"UPDATE products SET qty=qty-:qty, ustatus=1 WHERE pid=:pid";

此语句是否为“并发更新安全”,这意味着我需要任何事务或锁定表。

我只想确保这样的多个查询在同一时间执行 不会弄乱我的库存。

1 个答案:

答案 0 :(得分:4)

  1. 如果使用innodb,则all sql statements将在事务中执行,您无需明确指定。

  2. 并发控制是通过锁而不是事务来完成的。事务只能决定锁的寿命。

  3. update语句放置exclusive lock on the records that it wants to modify,这意味着no other statements can modify(有时甚至无法读取)锁定的记录,直到释放排他锁为止。因此,从并发的角度来看,您的陈述是安全的。