Anmelden

View Full Version : Fehlerbehandlung im RPGLE-FREE



Seiten : 1 [2]

B.Hauser
10-09-14, 17:11
Halte ich auch für übertrieben, nur deswegen 2 Datenpfade zu öffnen, wo es doch READ(N) usw. gibt, womit ich auch eine Datei, die für Update geöffnet wurde, ohne Sperre lesen kann.

Das klappt aber nur wenn Du ohne Commitment Control arbeitest.
Unter Commitment Control gibt weder die Erweiterung (N) noch der OpCode UNLOCK den Datensatz frei!

Birgitta

AG1965_2
11-09-14, 09:43
Danke Birgitta, wieder was (von dir) gelernt!

Fuerchau
11-09-14, 10:01
Dies gehört beim Einsatz von Commit/Control allerdings zum Grundwissen;).
Vorsicht ist beim Commit-Level *ALL anzuwenden.
Jeder READ, also auch ein READ(N), bleibt bis zum Commit/Rollback gesperrt.
Ich habe noch keine Anwendung gefunden in der dieser Sperrstatus sinnvoll ist.

BenderD
11-09-14, 10:30
Dies gehört beim Einsatz von Commit/Control allerdings zum Grundwissen;).
Vorsicht ist beim Commit-Level *ALL anzuwenden.
Jeder READ, also auch ein READ(N), bleibt bis zum Commit/Rollback gesperrt.
Ich habe noch keine Anwendung gefunden in der dieser Sperrstatus sinnvoll ist.

Die dahinter stehende Anforderung ist völlig alltäglich und in vielen Anwednungen wird da ohne Commit aufwändig drumherumprogrammiert:
- bei der Bearbeitung eines Auftrages müssen der Kopf und alle Positionen gesperrt werden. Lösung mit Commit; Sperrstufe Repeatable read (AS400 nennt das *ALL). Work around: Sperrkenzeichen im Kopf, das aber einfach ignoriert werden könnte.
- Bei einer Lagerumbuchung müssen angezeigte Lagerbestände gesperrt sein. Lösung mit Commit: Repeatable read. Ohne Commit: hoffentlich klappt das jetzt.
BTW: die Ausgangsfrage wäre mit commit Level Read committed elementar lösbar gewesen, da werden gesperrte Sätze überlesen (bei read uncommited kriegt man alle gezeigt.

Ich kann nur immer wieder empfehlen sich mit Commit Steuerung vertraut zu machen, statt falsche Vorurteile abzulassen. Für Software Häuser ohnehin ein Muss (ich enpfehle einen Blick in das europäische Produkthaftungsrecht).

D*B