Code Bye

有关于数据库的并发问题

现在在做一个相似于抢票的程序,数据库里有一个表包含了票的信息,其中一个字段是票的数量。
之前想到过锁,但是并不知道怎么去实现。
然后想到,能不能在UPDATE的时候加上条件,直接判断count大于0才更新,然后根据更新的行数来判断能否更新成功了。
UPDATE `piao` SET `count` = `count` - 1 WHERE `id` = :id AND `count` > 0

这样会不会出现并发时count小于等于0后还会更新的情况呢?UPDATE的时候是要先查询WHERE条件再执行UPDATE的吧?SQL语句都属于原子操作吗?

解决方案

20

引用

WHERE `id` = :id AND `count` > 0
这样会不会出现并发时count小于等于0后还会更新的情况呢?

不会。

引用

UPDATE的时候是要先查询WHERE条件再执行UPDATE的吧?

是的。

引用

SQL语句都属于原子操作吗?


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明有关于数据库的并发问题