关于mysql数据库无事务前提下并发修改的问题

我有一个问题关于mysql的
cas实现乐观锁去解决库存遗留问题时,判断改时值是否还大于0,会不会出现多线程同时更改一条数据,比如a线程在进行where判断时,b也来进行where判断,那么两个同时判断通过,那么然后两个都去修改,两个线程改完值却只减了1,会不会有这种情况,还是说一个在修改的时候另一个不能修改,数据库在没有开事务的时候,有没有默认加锁?

不会出现你说的情况,因为一个线程update时,mysql会加行级锁,另一个线程会阻塞等待。

如有帮助,请采纳,十分感谢!

当然不会出现,update xxx set xx where n > 0 ,这种情况只有一个能更新成功,更新完才释放写锁,其他线程才能写

语句执行会有个先后次序的 所以一般不会

MySQL的隔离级别,隔离级别上去了,每个操作都有加行锁,不会出现

加锁只是为了防并发修改,不是为了防查,因此建议在查询之前先去查下有没有锁,没锁就加锁,然后再进行后续的查询和处理。