PDA

View Full Version : SQL Insert schmiert ab



Seiten : 1 [2]

RobertPic
03-10-24, 14:35
..
Verstehe ich nicht, vor allem was ist die Satznr. 0 ?
...
Wie schon geschrieben, vervollständigte ich die noch offene Frage.

Das man Having ganze Tabellen schneller überprüft ist auch klar. Wobei das Prüfen auf Konflikte von Quell und Zieltabelle noch nicht abgedeckt ist (muss man beim INSERT machen).

Vollständigkeitshalber - Teil 2:
Es gibt auch ein (mühsames) MERGE INTO. Mit dem könnte man z.B. ein Änderungsdatum setzen oder Daten aktualisieren.

https://www.ibm.com/docs/en/i/7.3?topic=language-merging-data
(https://www.ibm.com/docs/en/i/7.3?topic=language-merging-data)

Fuerchau
03-10-24, 17:49
Es ging aber um "in eine leere Zieldatei". Da gibts im Ziel ja vorab nichts zu prüfen.
Satz-Nr. 0 ist eben, dass der einzufügende Satz nun als Dublette auffällt und die Satznummer > 0 eben der bereits aus der Quelle eingefügte Satz.
Wenn man das Ganze jetzt noch unter Commit laufen lässt, ist durch den Absturz das Ziel wieder leer;-).

BenderD
04-10-24, 08:55
Wenn man das Ganze jetzt noch unter Commit laufen lässt, ist durch den Absturz das Ziel wieder leer;-).

... nur wenn man rollback macht und ohne die Möglichkeit des rollback, bleibt eine inkonsistent gefüllte Datei übrig, was beim Bulk insert in nicht leere Dateien hohen Bereinigungsaufwand erfordert.

D*B

B.Hauser
04-10-24, 11:36
... nur wenn man rollback macht und ohne die Möglichkeit des rollback, bleibt eine inkonsistent gefüllte Datei übrig, was beim Bulk insert in nicht leere Dateien hohen Bereinigungsaufwand erfordert.

D*B

Bist Du Dir da so sicher?
Wenn unter Commit gearbeitet wird, erfolgt spätestens beim Job-Ende (oder Ende der Aktivierungsgruppe) egal ob normal oder abnormal (ohne vorheriges Commit) ein Rollback der offenen Transaktionen.

BenderD
04-10-24, 11:58
Bist Du Dir da so sicher?
Wenn unter Commit gearbeitet wird, erfolgt spätestens beim Job-Ende (oder Ende der Aktivierungsgruppe) egal ob normal oder abnormal (ohne vorheriges Commit) ein Rollback der offenen Transaktionen.

... wer füllt schon eine leere Work-Datei und beendet dann den Job, ohne seine Arbeit abgeschlossen zu haben.
Dein Statement kann ich aber so nicht stehen lassen: ENDJOB schickt im default einen Rollback hinterher, RCLACTGRP schickt (idiotischerweise) einen commit hinterher.

D*B