MySQL 如何实现乐观锁?
可以基于版本号实现乐观锁,修改数据的时候带上版本号(或者时间戳):
sql
UPDATE student SET name = '小李', version = 2 WHERE id = 100 AND version = 1
在每次数据更新的时候,都带上版本号,同时将版本 + 1,比如现在要更新 id = 1,版本号为 2 的记录,这时候就要先获取 id = 1的版本号,然后更新语句写成
sql
UPDATE table SET name = "小明",version = version + 1 WHERE id = 1 and version = 2
如果这个版本号与表记录中的版本号一致的话,就能更新成功,如果不相等就不进行更新,然后需要重新获取该记录的最新版本号,再进行更新数据