Birgitta, damit liegst du nur bedingt richtig.
Unter Commit wird ein Satz nur gesperrt, wenn tatsächlich ein Update erfolgt ist und kein Commit durchgeführt wurde. Nachfolgendes Lesen ohne Sperre hebt diese nicht auf.
Wurde der Satz noch nicht upgedated setzt ein Lesen ohne Sperre auch keine Sperre !
Ein Update setzt ja ein Lesen mit Sperre voraus.

Auch bei SQL ist das nicht anders.
Ein Select sperrt nichts, ein Select ... for update sperrt, ein Update sperrt nur unter Commit.