Laravel 事务与锁
用锁需要先开启事务,事务提交,会自动解锁。
共享:我可以读 写 加锁 , 别人可以 读 加锁。
排他:只有我 才 可以 读 写 加锁 , 也就是说,必须要等我提交事务,其他的才可以操作。
行锁:锁只对一行生效,比如 id=1 的那行
表锁:锁对整个表都生效
死锁:互相依赖,比如:多个锁住同一 行 / 表 数据。
DB::beginTransaction(); // 开启事务 $good = \App\Models\Good::sharedLock()->first(); //共享锁 s锁 读锁 (名字真多...) //$good = \App\Models\Good::lockForUpdate()->first(); //排他锁 x锁 写锁... DB::commit();
private function testLock(){ DB::beginTransaction(); $brand = Brand::where('id', '=', 2)->lockForUpdate()->first(); $brand->alis_name = 'bd2'; $brand->save(); DB::commit(); }