Hallo,
wie erhält man eine U- oder X-Zeilensperre auf genau einem Datensatz?
Bei meinen erfolglosen Versuchen bin ich wie folgt vorgegangen.
Verwendet wurde eine Tabelle mit einem Primärschlüssel PK mit mehreren Feldern (MSSQL => Eindeutiger gruppierter Index).
Die SQL-Statements SELECT WITH (UPDLOCK, ROWLOCK), DELETE WITH (ROWLOCK), INSERT WITH (ROWLOCK) und UPDATE WITH (ROWLOCK) wurden mit festgelegtem PK über eine JDBC-Connection mit Isolation-Level READ_COMMITTED innerhalb einer manuellen Transaktion ausgeführt. Beim SELECT wurden die Parametereinstellungen ResultSet.CONCUR_READ_ONLY, ResultSet.TYPE_FORWARD_ONLY, MaxRows = 1 und FetchSize =1 verwendet. Für Dauer der Transaktion wurde eine U- oder X-Sperre auf genau dem Datensatz der durch den PK identifiziert wird erwartet. Gesperrt wurde aber ein Schlüsselbereich. Der Schlüsselbereich wird scheinbar durch den Wert im ersten Feld des verwendeten PK (Index) bestimmt. In der Tabelle wurden alle Datensätze mit dem selben Wert in der PK-Feld-Spalte gesperrt.
Über Tipps würde ich mich freuen.
Gruß
Bunsoft2006
wie erhält man eine U- oder X-Zeilensperre auf genau einem Datensatz?
Bei meinen erfolglosen Versuchen bin ich wie folgt vorgegangen.
Verwendet wurde eine Tabelle mit einem Primärschlüssel PK mit mehreren Feldern (MSSQL => Eindeutiger gruppierter Index).
Die SQL-Statements SELECT WITH (UPDLOCK, ROWLOCK), DELETE WITH (ROWLOCK), INSERT WITH (ROWLOCK) und UPDATE WITH (ROWLOCK) wurden mit festgelegtem PK über eine JDBC-Connection mit Isolation-Level READ_COMMITTED innerhalb einer manuellen Transaktion ausgeführt. Beim SELECT wurden die Parametereinstellungen ResultSet.CONCUR_READ_ONLY, ResultSet.TYPE_FORWARD_ONLY, MaxRows = 1 und FetchSize =1 verwendet. Für Dauer der Transaktion wurde eine U- oder X-Sperre auf genau dem Datensatz der durch den PK identifiziert wird erwartet. Gesperrt wurde aber ein Schlüsselbereich. Der Schlüsselbereich wird scheinbar durch den Wert im ersten Feld des verwendeten PK (Index) bestimmt. In der Tabelle wurden alle Datensätze mit dem selben Wert in der PK-Feld-Spalte gesperrt.
Über Tipps würde ich mich freuen.
Gruß
Bunsoft2006
Comment