DB2-einfügen in eine Tabelle mit identity-Spalte

Ich bin derzeit versucht, zu automatisieren, einer DB2-Datenbank über shell-Skripte, aber es scheint ein problem mit der INSERT-operation.

Den Tabellen ich erstellen, die wie folgt Aussehen:

CREATE TABLE "TRAINING1"
(ID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY (STARTS WITH 1 INCREMENT BY 1),
F1 VARCHAR(20) NOT NULL,
name VARCHAR(40) NOT NULL,
surname VARCHAR(40) NOT NULL,
CONSTRAINT pk_train1_id primary key(ID));

Nun die Schöpfung funktioniert genauso gut für alle ähnlichen Tabellen, aber wenn ich versuche, Daten einzufügen:

db2 "insert into TRAINING1 values ('hello', 'world', 'foo', 'bar')"

Bekomme ich diesen Fehler:

SQL0117N The number of values assigned is not the same as the number 
of specified or implied columns or variables. SQLSTATE=42802

Soweit ich das verstanden habe, ist der primäre Schlüssel, die ich angegeben Werte automatisch generieren soll und kann keine Werte explizit zugewiesen werden. Aus Neugier habe ich dieses:

db2 "insert into TRAINING1 values (1, 'hello', 'world', 'foo', 'bar')"

und es meckert dann mit diesem Fehler:

SQL0798N A value cannot be specified for column "ID" which is defined 
as GENERATED ALWAYS. SQLSTATE=428C9

Ich bin noch ziemlich neu auf DB2, sondern fast eine Woche später, habe ich noch nicht gefunden habe Lösungen für dieses noch.
Ich bin mit DB2 Express Edition auf einem 64-bit Ubuntu virtuellen Maschine.
Irgendwelche Gedanken auf, warum es dies zu tun?

Dank

  • Sie Liste 4 Zeichen Spalten für die INSERT, aber es gibt nur 3 Zeichen die Spalten in der Tabelle.
Schreibe einen Kommentar