Databases Reference
In-Depth Information
10.2
Typische Probleme beim parallelen Zugriff
Hat das Datenbankmanagementsystem keine ordentliche Ver-
waltung von Transaktionen, kann es zu den folgenden Proble-
men kommen. Zur Erklärung wird ein Befehl
SELECT Mitarbeiter.Gehalt
INTO :X
FROM Mitarbeiter
WHERE Mitarbeiter.MiNr=1
genutzt. Für die Zeile INTO :X wird davon ausgegangen, dass
eine Variable :X im System definiert wurde, die vom Typ her
zum Ergebnis der Anfrage, hier zur Spalte Mitarbeiter.Gehalt,
passt. Eine solche Variablendeklaration ist in verschiedenen Da-
tenbank-Managementsystemen möglich, ist aber sparsam ein-
gesetzt worden, da Ergebnisse von Anfragen nicht in zusätzli-
chen Variablen verwaltet werden sollten. Der Ansatz wird hier
vorgestellt, der als Platzhalter dafür dienen kann, dass eine
Applikation einen Wert aus der Datenbank liest und nach einer
Bearbeitung wieder, eventuell an anderer Stelle, in die Daten-
bank schreiben will.
lokale Variablen
in Datenbanken
Nutzer 1
Nutzer 2
Datenbankinhalt
Mitarbeiter
MiNr Name Gehalt
1 Uwe 70
SELECT Mitarbeiter.Gehalt
INTO :X
WHERE Mitarbeiter.MiNr=1
SELECT Mitarbeiter.Gehalt
INTO :Y
WHERE Mitarbeiter.MiNr=1
UPDATE Mitarbeiter
SET Gehalt=:X+10
WHERE Mitarbeiter.MiNr=1
Mitarbeiter
MiNr Name Gehalt
1 Uwe 80
UPDATE Mitarbeiter
SET Gehalt=:Y+20
WHERE Mitarbeiter.MiNr=1
Mitarbeiter
MiNr Name Gehalt
1 Uwe 90
Abb. 10-2: Lost Update
In Abb. 10-2 ist ein Beispiel für eine verloren gegangene Ände-
rung, ein „Lost Update“, beschrieben. Beide Nutzer wollen das
Gehalt des Mitarbeiters mit der MiNr 1 ändern. Dazu lesen sie
den aktuellen Wert jeweils in eine Variable. Diese Variable wird
dann zur Aktualisierung des Datenbankeintrags genutzt. Da
Lost Update
227
Search WWH ::




Custom Search