一:乐观锁在laravel中乐观锁大多是基于数据版本 ( Version )记录机制实现。何谓数据版本?即为数据增加一个版本标识,在基于数据库表的版本解决方案中,一般是通过为数据库表增加一个 “ver
顺晟科技
2023-02-26 09:40:36
39
在laravel中,乐观锁大多是基于数据版本记录机制实现的。什么是数据版本?即,向数据添加版本标识符通常是通过在基于数据库表的版本解决方案中向数据库表添加“版本”字段来实现的。
在读取数据的时候,一起读取这个版本号,然后在更新的时候在这个版本号上加一。此时,将提交数据的版本数据与数据库表中相应记录的当前版本信息进行比较。如果提交数据的版本号大于数据库表的当前版本号,则更新,否则视为过期数据。
laravel中的查询构造函数包含一些可以帮助您在select语法中实现“悲观锁定”的函数。如果希望在查询中实现“sharedLock ”,可以使用Shared Lock方法。在提交事务之前,共享锁可防止选定的数据列被篡改:
DB:table(' users ')-where(' votes '''100)-shared lock()-get();上述查询等效于以下SQL语句:
select * from ` users ` where ` votes ` 100 '锁定共享模式;此外,您可以使用lockForUpdate方法。“for update”锁防止所选行被其他共享锁修改或删除:
DB:table(' users ')-where(' votes '''100)-lockForUpdate()-get();上述查询等效于以下SQL语句:
select * from ` users ` where ` votes ` 100 ' for update;