PDA

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

B.Hauser
30-11-12, 12:04
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