Laravelデータベースのクエリー・ロックに関する知識点
923 ワード
Mysqlロックのタイプ
1共有ロッククエリーデータはブロックされ、誰も占有していないときに に戻ります.更新データはブロックされ、誰も占有していないときに に戻る.
2悲観ロッククエリーデータ通常クエリーは を返します.更新データは、前のロック更新の実行が完了するのを待ってから 更新をブロックする.
もし私が直接ロックを使用してトランザクションを使用しないと正常な論理ができますか?正しい エラー 理由ロックは、 を有効にするには、トランザクションで実行する必要があります.
1共有ロック
DB::table('users')->where('id', 100)->lockForUpdate()->first();
2悲観ロック
DB::table('users')->where('id', 100)->sharedLock()->first();
もし私が直接ロックを使用してトランザクションを使用しないと正常な論理ができますか?
DB::transaction(function() {
$user = DB::table('users')->where('id', 100)->lockForUpdate()->first();
$user->nick_name = " ";
$user->save();
});
$user = DB::table('users')->where('id', 100)->lockForUpdate()->first();
$user->nick_name = " ";
$user->save();