2020
12-22
12-22
Golang 使用gorm添加数据库排他锁,for update
适用于先读后更新的数据竞争场景,且应该将加锁操作放到事务中,防止锁被自动释放,原因参考mysqldocfuncUpdateUser(db*gorm.DB,idint64)error{tx:=db.Begin()deferfunc(){ifr:=recover();r!=nil{tx.Rollback()}}()iferr:=tx.Error;err!=nil{returnerr}user:=User{}//锁住指定id的User记录iferr:=tx.Set("gorm:query_option","FORUPDATE").First(&user,...
继续阅读 >