Autoinkrementierung bei bestehenden DB2/400 Tabellen
Die im “alten Stil” erstellten DB-Tabellen wurden über DDS-Sourcecodebestimmungen beschrieben und anschließend mit CRTPF erstellt. Views (logische Sichten) wurden ebenfalls mit DDS beschrieben und mit CRTLF erstellt.
Heute sollte man Tabellen mit SQL erstellen und ändern. Wer jedoch eine mit DDS beschriebene Tabelle später um ein Auto-Inkementierungsfeld erweitern möchte hat schlechte Karten: Es existiert kein entsprechendes DDS-Schlüsselwort und ein ALTER-Table der folgenden Art schlägt ebenfalls fehl:
ALTER TABLE AULICH/M$SE009PA ADD COLUMN ID BIGINT NOT NULL GENERATED
                                               Â
 ALWAYS AS IDENTITY
M$SE009PA in AULICH für Operation ungültig.                       ÂDie genaue Fehlermeldung lautet SQL7008 M$SE009PA in AULICH für Operation ungültig.  14 - DATALINK-, LOB- oder IDENTITY-Spalte kann einer Nicht-SQL-Tabelle
nicht hinzugefügt werden.                                             Â
Autoinkrementierung mit DDS-beschriebenen Datenbankdateien geht nicht. Jedenfalls nicht auf normalem Weg! Wer sich damit nicht abfinden kann und die bestehenden Tabellen nicht auf SQL-Tabellen migrieren kann, dem bietet sich ein halbwegs eleganter Ausweg über die Erweiterung der DDS-Tabellenbeschreibung um ein “normales” ID-Feld (numerisch, 18,0) und das Füllen dieses Feldes über ein Triggerprogramm.