PDA

View Full Version : Doppelter Satzschlüssel



harkne
03-11-23, 10:46
Hallo zusammen,

ich bekomme folgenden Fehler:
Nachricht . . . : Doppelter Satzschlüssel in Teildatei FEHLE00001.
Ursache . . . . : Die Ausgabe- oder Fortschreibungsoperation bei
Teildateinummer 1, Satznummer 0, Format FEHLERF für Teildatei FEHLE00001 in
Datei FEHLER_NRT in Bibliothek SAD_UTIL ist fehlgeschlagen. Teildateinummer
1, Satznummer 163, Format FEHLERF, hat den gleichen Schlüssel wie
Teildateinummer 1, Satznummer 0, Format FEHLERF. Ist die Satznummer null,
ist der doppelte Satzschlüssel bei einer Ausgabeoperation entstanden.
Fehlerbeseitigung: Einen der beiden Satzschlüssel ändern, damit die Schlüssel
eindeutig sind. Anschließend die Anforderung wiederholen.

Den Satz wollte ich über UPDDTA einfügen. Auf unserem Testsystem ging es problemlos nur auf dem Livesystem habe ich diesen Fehler bekommen.

Die Datei hat 3 Felder unter anderem das Feld ID (autoincrement)

einen weiteren schlüssel auf die Nachrichten-ID. Hier wollte ich einen Wert eintragen, der definitiv noch nicht in der Datei drin ist. Also kann es an diesem Wert nicht liegen. Deshalb ist meine Vermutung das Feld ID. Aber es ist im MOment egal welche Werte ich wo eingebe (ich habe es jetzt auch aus Verzweiflung versucht in die ID irgend einen Wert einzutragen) es kommt immer dieser Fehler, nur die Satznummer (hier 163) ändert sich immer.

Weiß jemand was dazu?

Danke!

Andreas_Prouza
03-11-23, 10:52
Wenn die ID automatisch generiert wird reicht es wenn du die ID Spalte beim Insert weg lässt.

Via SQL:

Insert into FEHLE00001 (Spalte1, Spalte2) values ('Wert1', 'Wert2')

oder

Insert into FEHLE00001 values (default, 'Wert1', 'Wert2')

lg Andreas

Fuerchau
03-11-23, 10:54
Da ja die Satznummern angegeben sind, sollte man die Daten ja prüfen können.
Wer weiß, wie UPDDTA mit Neuanlagen so umgeht.
Besser ist es, einen SQL-Insert zu schreiben.

B.Hauser
03-11-23, 11:41
Ich würde zunächst einmal prüfen was die letzte ID ist und welches die nächste sein sollte.

Select Next_Identity_Value, a.*
from qsys2.syspartitionstat a
Where Table_Schema = 'YOURSCHEMA'
and Table_Name = 'YOURTABLE';

Sofern die Id automatisch generiert wird und die nächte Id (s.o.) vor der höchsten Id in der Tabelle liegen, würde ich den (Re)Start-Wert der Id neu setzten (> höchste Id in der Tabelle). Ansonsten bekommst Du bei jedem Satz den Du (egal wie) schreiben willst Probleme.


Alter Table YOURSCHEMA.YOURTABLE
Alter Column IDCOLUMN Restart With 4711;

Birgitta

harkne
03-11-23, 11:45
Ich habe das bisher immer mit UPDDTA gemacht, ohne Probleme. Und wie gesagt, auf dem Testsystem hat es auch funktioniert. Aber ich versuche das mal mit dem Restart. Danke