私は Spring-Data-Jpa を使用しており、データベース (Oracle) のロックを取得するために @Lock アノテーション (PESSIMISTIC_WRITE) を使用しています。次のシナリオがデータベースのデッドロックにつながる可能性があるかどうかを理解するのに助けが必要です。
- トランザクション 1 (PROPAGATION_REQUIRES_NEW、ISOLATION_DEFAULT) は、Teacher テーブルなどに対してデータベース ロックを取得します (ID=1 の行に対してロックが取得されるとします)。会議などの子テーブルに新しいレコードを挿入しようとします。Teacher テーブルは更新されません。
- トランザクション 1 の進行中。トランザクション 2 (PROPAGATION_REQUIRED、ISOLATION_DEFAULT) は、Teacher テーブル (id=1 の行) を更新しようとします。データベースのロックはかかりません。
- ロックは ID 1 の行に引き継がれるため、トランザクション 2 はトランザクション 1 が乗り越えるのを待たなければなりません。
この状態がデータベースのデッドロックにつながる可能性はありますか?