MySQL(InnoDB)において、トランザクション分離レベルがデフォルトのREPEATABLE READに設定されています。初期状態としてusersテーブル (id INT PRIMARY KEY, name VARCHAR(50), age INT)には (1, 'Alice', 20), (2, 'Bob', 25) の2件が存在します。ここで以下の順序でクエリが実行された場合、ステップ7でトランザクションAが取得するレコード件数とその理由として正しいものはどれでしょうか。
【実行順序】
- [ステップ1] トランザクションA: BEGIN;
- [ステップ2] トランザクションA: SELECT * FROM users WHERE age >= 30; (結果: 0件)
- [ステップ3] トランザクションB: BEGIN;
- [ステップ4] トランザクションB: INSERT INTO users VALUES (3, 'Charlie', 35);
- [ステップ5] トランザクションB: COMMIT;
- [ステップ6] トランザクションA: UPDATE users SET name = 'Updated' WHERE age >= 30; (処理成功: 1行更新)
- [ステップ7] トランザクションA: SELECT * FROM users WHERE age >= 30;