SELECT: Datensatz sperren

Status
Nicht offen für weitere Antworten.

nogi

Mitglied
Hallo,

ich möchte einen Datensatz per 'SELECT MIN(spalte_a) FROM tab' gegen eine weitere SELECT Abfrage sperren.

Beispiel Tabelle tab

spalte_a
1
2
3

1 Verbindung reserviert nach SELECT Abfrage Datensatz 1. Wird, solange Datensatz 1 noch nicht wieder freigegeben wurde, der gleiche SELECT Befehl ausgeführt wird Datensatz 2 gesperrt.

Nun zu meinen Fragen:

Ist es eine Datenbankeinstellung (IBM DB2/Cloudscape)?
Ist es eine JDBC Einstellung (Transaktion / Locking)?

Ich habe schon verschiedene JDBC Einstellungen versucht, haben aber leider nicht zum gewünschten Effekt geführt.

Vielen Dank im voraus

Gruß

NoGi
 

AlArenal

Top Contributor
Ein SELECT ist eine Lese-Operation, zu welchem Zweck sollte sie Datensätze sperren können?

Kannst du den Zweck des Ganzen in einem Praxis-Beispiel erläutern?
 

nogi

Mitglied
Ich muss etwas vergleichbares wie eine Kinoticketbestellung nachstellen. Neben Spalte A gibt es mindestens noch Spalte B, Spalte B ist nur gefüllt wenn das 'Ticket' bereits reserviert wurde.

Um diese Vorgabe umzusetzen möchte ich zunächst per SELECT den kleinsten freien Datensatz zurückgebenlassen, sperren und per UPDATE anschließend Spalte B füllen. Es muss verhindert werden, das zwei Benutzer die gleiche freie ID erhalten.

PS: Vielen Dank für die schnelle Reaktion.
 

AlArenal

Top Contributor
Handelt es sich um eine Web-Anwendung (also serverseitig), oder eine Client-Anwendung die driekt via JDBC auf die DB zugreift? Was für eine RDBMS wird eingesetzt und ist die DB-Struktur fest vorgegeben (nicht von dir veränderbar)?
 

nogi

Mitglied
Es handelt sich um eine Client Applikation mit direktem Zugriff per JDBC auf die Datenbank.
Als RDBMS wird zur Entwicklung eine Cloudscape eingesetzt, produktiv soll die Applikation den auf eine DB2 zugreifen.
Die Struktur ist frei von mir veränderbar.
 

AlArenal

Top Contributor
Dann wirf mal die Doku an. In DB2 kannste in SELECTs auch Locks verteilen. Dabei musst du dich mal mit den diversen verfügbaren Lock-Mechanismen auseinandersetzen. Lock Request Clauses gibts glaub ich seit DB2 8.2.

http://publib.boulder.ibm.com/infoc...topic=/com.ibm.db2.udb.doc/admin/r0000879.htm

Ansonsten kannst du ja auch im Falle dessen, dass zwischenzeitlich Änderungen vorgenommen wurden, entsprechend neu selektieren. Da gibts Unmengen von Kniffen und Workaraounds, wobei die beste Alternative immer die sein sollte, Features der DB zu nutzen.
 

nogi

Mitglied
Vielen Dank bin eben die Anleitung kurz überflogen, sieht nach dem aus was ich suche.

Vielen Dank noch einmal

Gruß

NoGi
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
I Hibernate / JPA - Spaltenname von Query (Select) bekommen Datenbankprogrammierung 6
OnDemand Select * from bringt keine Rückgabe Datenbankprogrammierung 49
OnDemand Select vs Update ins blaue, was ist teurer? Datenbankprogrammierung 11
M JPA: select all mit unterschiedlichem Tablename Datenbankprogrammierung 2
A MySQL Select und Insert in Java Datenbankprogrammierung 15
J JPA: Wie sieht der select aus? Datenbankprogrammierung 2
D geänderte SELECT Abfragen Datenbankprogrammierung 15
N SQLite Hibernate und Aufruf von Funktion SELECT last_insert_rowid() Datenbankprogrammierung 2
T sqlite select Datenbankprogrammierung 12
D Oracle NullPointerException bei select mit Null Values Datenbankprogrammierung 5
F MySQL Was bedeuten die Einzelnen Zeichen in Select Querrys? Datenbankprogrammierung 1
J SQL SELECT mit einem Array Datenbankprogrammierung 1
J SELECT Abfrage/Suche Datenbankprogrammierung 4
E Kann man in einer if-Bedingung auch SELECT-Statements überprüfen? Datenbankprogrammierung 23
M SQL-Exception trotz funktionierendem SELECT Datenbankprogrammierung 4
U PostgreSQL SELECT Statement Datenbankprogrammierung 5
L Select Anweisung wird falsch interpretiert Datenbankprogrammierung 3
C HSQLDB Platzhalter in SELECT Datenbankprogrammierung 6
I SELECT bei Datenbankverbindung Datenbankprogrammierung 6
C MySQL JPA - namedQuery (SELECT) -getResultList() - liefert falsches Ergebnis Datenbankprogrammierung 1
S select: alle ergebnisse ermitteln Datenbankprogrammierung 5
G SQLite SQLite Select für View vereinfachen/optimieren Datenbankprogrammierung 4
C SQL-Statement SELECT über 3 Tabellen Datenbankprogrammierung 5
H HSQLDB insert .... values("test1",select test2 from foo) Datenbankprogrammierung 2
D JDBC insert mit select abfrage Datenbankprogrammierung 5
W SELECT oder Programm-Logik Datenbankprogrammierung 10
J Hibernate Select auf Parameterliste Datenbankprogrammierung 3
T MySQL Dynamisch Suchen Select Datenbankprogrammierung 4
D ArrayList in Select Datenbankprogrammierung 12
N Select mit join Datenbankprogrammierung 3
F Oracle select sum() join select sum() Datenbankprogrammierung 9
B SELECT ja - INSERT nein (MySQL) Datenbankprogrammierung 3
R Oracle Performance bei SELECT mit vielen Reihen Datenbankprogrammierung 5
T MySQL Db select * und Insert schlagen fehl Datenbankprogrammierung 2
I Select-Statement optimieren Datenbankprogrammierung 14
M Variable in SQL SELECT * FROM ... WHERE mithilfe von PreparedStatement benutzen? Datenbankprogrammierung 28
R Derby/JavaDB Möglichkeit von einem Random Select! Datenbankprogrammierung 6
B Mehrfachschachtelung SELECT Datenbankprogrammierung 2
T MySQL Select: Zusammenfassen von Daten und bilden von Durchschnitt? Datenbankprogrammierung 4
GianaSisters MySQL Datenbank Select error Datenbankprogrammierung 5
R Select Statement als temporärer Table Datenbankprogrammierung 7
R Derby/JavaDB Select Statement Where bedingung will nicht ganz! Datenbankprogrammierung 4
R Derby/JavaDB Select TOP Statement geht nicht Datenbankprogrammierung 3
S MySQL Problem mit SELECT bzw encoding Datenbankprogrammierung 4
B HSQLDB Probleme mit Select...Where Abfrage Datenbankprogrammierung 16
F wie funktioniert if Statement in SELECT? Datenbankprogrammierung 2
J [Hibernate] Select Statement Datenbankprogrammierung 4
A SQLite SELECT von ungleichen Spaltenpaaren Datenbankprogrammierung 10
Eldorado MySQL SELECT mit GROUP BY und INNER JOIN Datenbankprogrammierung 2
M Hibernate JPQL SELECT optional? Datenbankprogrammierung 2
C Datenbank-Abfrage, if im Select Datenbankprogrammierung 9
G Aufruf von SELECT INTO Datenbankprogrammierung 8
B H2 PreparedStatement SELECT * FROM ? Datenbankprogrammierung 4
X Select Query auf Substring Datenbankprogrammierung 2
S Select eines bestimmten Datensatzes Datenbankprogrammierung 4
M Select * from mydaten where ... Datenbankprogrammierung 4
T Unerwartete Datenbankausgabe bei "select now()" (es wird ein .0 angehängt) Datenbankprogrammierung 5
M Probleme bei Select in Schleife Datenbankprogrammierung 7
G SELECT liefert leere Zeilen Datenbankprogrammierung 32
M SELECT longtext -> als String behandeln Datenbankprogrammierung 6
H Select in einem Select Datenbankprogrammierung 7
G Select- Abfrage Datenbankprogrammierung 19
S Insert mit Select Datenbankprogrammierung 6
G MSSQL Server SELECT Abfrage funktioniert nicht Datenbankprogrammierung 4
R SELECT aus hsqldb mit Parameter Datenbankprogrammierung 2
H Beim insert bekomme ich den Fehler missing select keyword Datenbankprogrammierung 2
A Problem mit einem Select-Befehl Datenbankprogrammierung 5
E Neues select auf ein vorhandenes Resultset Datenbankprogrammierung 11
A SELECT-Anweisung liefert keine Datensätze zurück Datenbankprogrammierung 9
S Select über mehrere Datenbanksysteme Datenbankprogrammierung 14
P SELECT Datenbankprogrammierung 20
T select Abfrage in Java Integer speichern ? Datenbankprogrammierung 2
B fehler bei select befehl Datenbankprogrammierung 5
S Select von bis in DB2 Datenbankprogrammierung 8
S Select mit PreparedStatement Datenbankprogrammierung 2
E Ein If und ein SELECT in Oracle? Datenbankprogrammierung 2
T Select Statement auf Relation Datenbankprogrammierung 3
S PostgreSQL SELECT/UPDATE etc. Datenbankprogrammierung 4
4 Probleme mit Select abfrage Datenbankprogrammierung 4
G Fehler in der select-Abfrage Datenbankprogrammierung 3
isowiz SELECT SUM() Ergebnis in Java abfragen Datenbankprogrammierung 6
T LIMIT In SELECT Anweisung Datenbankprogrammierung 4
R Select und Insert in Schleife - Problem mit ResultSet Datenbankprogrammierung 2
G SELECT Name= " " verhindern Datenbankprogrammierung 5
G Syntax für Select - Abfrage mit Variablen Datenbankprogrammierung 39
J SELECT-Statement Datenbankprogrammierung 4
R Select auf der Konsole ausgeben Datenbankprogrammierung 2
D brauche mal kurz hilfe bei einem select-stmt Datenbankprogrammierung 6
G Select-Abfragen sind sehr langsam Datenbankprogrammierung 7
D HSQLSB SELECT Datenbankprogrammierung 9
F SQLite Datensatz löschen Datenbankprogrammierung 13
B Mit Button einen Datensatz löschen Datenbankprogrammierung 2
S sql query, um bestimten datensatz zu finden Datenbankprogrammierung 33
D MySQL Neuen Datensatz mit "new" anlegen Datenbankprogrammierung 16
E Nur der letzte Datensatz wird in Tabelle geschrieben Datenbankprogrammierung 4
M Serienbrief aus Datensatz Datenbankprogrammierung 2
E Aufzählung liest nur ersten Datensatz Datenbankprogrammierung 14
S SQLite Selectanfrage lieft datensatz aber cursor ist leer Datenbankprogrammierung 2
M Designfrage zu Rows die sich auf einen Datensatz derselben Tabelle beziehen Datenbankprogrammierung 7
A MySQL Datensatz wird nicht richtig gelöscht Datenbankprogrammierung 6

Ähnliche Java Themen

Neue Themen


Oben