Hallo,
um das ganze Transaktionssicher zu machen, musst den Datensatz vorher sperren und überprüfen ob du die Sperre erhalten hast. Da ein Datensatz nur einmal gesperrt werden kann, und wenn das dann alle Instanzen so machen, ist sichergestellt das nur einer schreibend auf den Satz zugreifen kann.
Code:
StartTransaction;
try
try
> select * from table where id = ... for update
> update table set column = column + 10 where id = ...
CommitTransaction;
except
Sperre nicht erhalten!
end;
finally
RollbackTransaction; < Wirkungslos wenn vorher commit!
end;
Das entscheidende ist das Starten der Transaktion und dem select
for update, dies kann immer nur einer machen, und die Sperre bleibt solange erhalten bis das ein Commit oder Rollback kommt. Die Ausnahme bei Oracle hängt aber davon ab welchen Isolationslevel du eingestellt hast, entweder Ausnahme oder warten bis die Sperre des anderen Benutzers weg ist.