现在在做一个相似于抢票的程序,数据库里有一个表包含了票的信息,其中一个字段是票的数量。
之前想到过锁,但是并不知道怎么去实现。
然后想到,能不能在UPDATE的时候加上条件,直接判断count大于0才更新,然后根据更新的行数来判断能否更新成功了。
之前想到过锁,但是并不知道怎么去实现。
然后想到,能不能在UPDATE的时候加上条件,直接判断count大于0才更新,然后根据更新的行数来判断能否更新成功了。
UPDATE `piao` SET `count` = `count` - 1 WHERE `id` = :id AND `count` > 0
这样会不会出现并发时count小于等于0后还会更新的情况呢?UPDATE的时候是要先查询WHERE条件再执行UPDATE的吧?SQL语句都属于原子操作吗?
解决方案
20
不会。
是的。
是