View Full Version : DB2 identity Nummer
Andreas Herzfeldt
30-11-12, 11:10
Hallo zusammen, wir übertragen von einem System zu anderen über Nacht Daten per FTP. Einige Tabellen arbeiten mit von der DB2 generierten "Identity" Nummern nach diesem Muster : GENERATED ALWAYS AS IDENTITY. Weiss jemand wo die DB2 diese Nummern speichert ( evtl. in QSYS2 ), um diese dann zu synchronisieren.
Vielen Dank,,
Andreas
andreaspr@aon.at
30-11-12, 12:01
Ich bin mir nicht sicher ob ich dir richtig verstanden habe.
Diese Klausel kannst du bei einer Tabelle für eine Spalte angeben.
Die DB2 schreibt die Nummern dann in die Spalte hinein.
Mit dem Zusatz ALWAYS wird auch definiert, dass NUR das System die Nummer schreiben darf.
Wenn User und System die Nummern schreiben dürfen, muss der Zusatz DEFAULT verwendet werden.
Wobei ich bei der GENERATED Klausel nur ALWAYS empfehlen kann, da es sonst zu Problemen führen kann.
lg Andreas
Hallo zusammen, wir übertragen von einem System zu anderen über Nacht Daten per FTP. Einige Tabellen arbeiten mit von der DB2 generierten "Identity" Nummern nach diesem Muster : GENERATED ALWAYS AS IDENTITY. Weiss jemand wo die DB2 diese Nummern speichert ( evtl. in QSYS2 ), um diese dann zu synchronisieren.
Vielen Dank,,
Andreas
Ich gehe davon aus, dass das 2. System ein Test oder Backup System ist und in der Nacht die Daten für neue Tests aktualisiert werden.
Habt Ihr schon mal daran gedacht die Identity Columns auf dem anderen System mit GENERATE BY DEFAULT zu generieren oder vor der Übernahme entsprechend zu setzen.
Birgitta
Andreas Herzfeldt
24-12-12, 09:43
Hallo zusammen,
wir haben das jetzt wie folgt gelöst, Birgitta hatte mit Ihrer Vermutung der Zweitsysteme recht.
Ermittlung der maximalen Zähler per "select max", addieren + 1 und setzen des neuen Wertes per
ALTER TABLE
&NLIB/&NTABLE
ALTER COLUMN &VID
RESTART WITH &VCOUNT
Das Ganze in ein CL mit QM-Query und gut ist.
Frohe Weihnachten !
Andreas