Das "Phantom-Lesen" in MySQL auf RR-Isolationsebene ist tief verborgen, kann es aber dennoch reproduzieren. Hier sind die Schritte:
-
Tabelle erstellen ab(a int Primärschlüssel, b int);
-
Tx1:
beginnen;
wähle * aus ab; // leere Menge - Tx2:
beginnen;
insert in ab values(1,1);
commit; - Tx1:
wähle * aus ab; // leerer Satz, erwarteter Phantom-Read fehlt.
update ab set b =2 wobei a =1; // 1 Zeile betroffen.
wähle * aus ab; // 1 Zeile. Phantom hier lesen!!!!
verpflichten;