Ich möchte ein Transaktionsfile mit einem Statuswert updaten, abhängig von einem Subselect des Masterfiles. Der Wert soll abhängig vom Record oder fehlen desselben sein.
Beispiel:
update Transaktion set Status = '1'
where exists (select * from Master where TrKey = MaKey and MaSts = '1')
or not exists (select * from Master where TrKey = MaKey);
Sollte so funktionieren.
Der 1. Exists schränkt ja zusätzlich auf and "MaSts = '1'" ein.
Der Not Exists prüft nur die tatsächliche Nicht-Existenz des Schlüssel.
Wenn du das ganze per Transaktion machen könntest, hast du immer die Chance, das Ergebnis vor einem Commit zu prüfen und wenn es nicht stimmt, das Programm abzubrechen um einen Rollback durchzuführen. Per Debugger könntest du auch SQLCODE auf -1 setzen um im Programm wahlweise Commit/Rollback zu machen.
Transaktionen sind auch zum Testen außerordentlich hilfreich.
Für mein Verständnis würde der Status beim SQL von camouflage für MaKey=TEST1 nicht auf 1 setzen, da es keinen TEST1 Satz mit MaSts=1 gibt aber min. ein TEST1 Satz vorhanden ist.
Wärend beim Beispiel von Birgitta für TEST1 der Status auf 1 gesetzt wird, da zwar kein TEST1 Satz mit MaSts=1 gefunden wurde, aber ein Satz wo MaKey ungleich TEST1 ist.
Bookmarks