Zitat von
hoika:
Das Problem ist, dass Programm 2 (Select)
erst eine neue Transaktion starten muss,
bevor es die Daten von Programm (nach dessen Commit) sehen kann.
Das ist nicht ganz korrekt.
Das gilt nur bei Verwendung des Transaction-Isolation-Levels SNAPSHOT
bzw. RepetableRead. Das sollte aber die Ausnahme sein.
Normalerweise wird READ COMMITTED verwendet.
Da ist es ausreichend das
SQL-Statement erneut auszuführen und es werden
alle Daten anderer Transaktionen die mit COMMIT bestätigt sind gesehen.
Auch wenn das COMMIT nach dem Start der eigene Transaktion erfolgte.
Deshalb ja auch der Name READ COMMITTED.
Bei SNAPSHOT hingegen werden alle Daten anderer Transaktionen
ignoriert, auch wenn diese mit COMMIT bestätigt wurden.
alex