I understand the examples given for "dirty reads" and "phantom reads" on the wikipedia page for isolation levels. However I'm not sure how to categorise the following situation and what isolation level or different strategy to apply in order to avoid this situation.
- Transaction 1: Inserts row in table A
- Transaction 2: Selects row in table A
- Transaction 2: Selects row in table B based on something in the previous read
Transaction 2: Commit- Transaction 1: Inserts row in table B
- Transaction 1: Commit
問題は、T1 が両方のテーブルへの書き込みを完了する前に、トランザクション 2 が B で何かを選択することです。手順 3 の選択では、5 で挿入された行を正しく選択する必要がある場合があります。これは、ダーティ リードか、ファントム リードか、どちらでもないか。問題を回避するには、READ_COMMITTED 分離レベルで十分でしょうか? 私が理解しているように、READ_COMMITTEDを使用すると、T2はその時点でT1によって挿入された新しい行を読み取るべきではありません。