PDA

View Full Version : Kein Journaleintrag bei Delete im SQLRPGLE?



Ottersberg
24-11-15, 09:47
Moin,

wir haben ein SQLRPGLE-Programm, dass Daten mit delete löscht. Diese gelöschten Datensätze findet man dann nicht im Journal. Ist das korrekt? Haben wir da noch was falsch eingestellt?

Ich konnte dazu nichts finden. Wahrscheinlich hab ich wieder die falschen Suchbegriffe verwendet.

Auszüge aus dem Programm:
exec sql
set option Naming = *SYS,
DatFmt = *ISO,
Commit = *CHG,
CloSqlCsr = *ENDMOD;

exec sql
delete from [Datei];

exec sql
Commit;


Danach wird die Datei mit write wieder gefüllt.

Fuerchau
24-11-15, 09:53
In diesem Fall kann das korrekt sein.
Der Optimizer ersetzt ein "Delete from table", da er keine Where-Klausel enthält ggf. durch CLRPFM.
Unter Commit sollte das eigentlich nicht vorkommen, da das per Rollback nicht rückgängig zu machen ist.
Der CLRPFM müsste im Journal dann auftauchen.

Zu Sicherheit kann man auch "delete from table where Fx<>'xyz'" machen, also eine Whereklausel die alle Sätze umfasst. Das Problem ist dann ggf. die Performance bei mehreren 1000 Sätzen.

Ottersberg
24-11-15, 10:22
Das würde es erklären.

Ich sehe im Journal nur ein F/CH und ein D/CG. Ich hätte dann ein D/DF oder F/CR erwartet.
Habe einfach mal CLRPFM aufgerufen. Dann steht F/CR im Journal.
Liegt aber vielleicht daran, dass es über SQL kommt, dass dann F/CH und D/CG ausgegeben werden.