我有一个小型 POS 系统,服务器端使用 PHP 和 MySql (InnoDB)。
当“销售”完成时,执行以下查询来更新库存数量:
"UPDATE products SET qty=qty-:qty, ustatus=1 WHERE pid=:pid";
这个语句是否是“并发更新安全”,这意味着我是否需要任何事务或锁定表。
我只是想确定,像这样的多个查询是同时执行的
不会弄乱我的库存。
如果你使用innodb,那么所有sql语句在事务中执行,您不需要显式指定。
并发控制是通过锁而不是事务来完成的。事务可能只决定锁的寿命。
更新语句放置了一个对要修改的记录进行排他锁定, 意义没有其他语句可以修改(有时甚至无法读取)锁定的记录,直到排他锁被释放。因此,从并发的角度来看,您的声明是安全的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)