Folgendes Problem: Ich habe in einer SQL-Tabelle eine Spalte definiert als GENERATED BY DEFAULT um auch Werte für diese Spalte vorgeben zu können:
Code:
ID INTEGER GENERATED BY DEFAULT AS IDENTITY (
START WITH 1 INCREMENT BY 1
NO MINVALUE NO MAXVALUE
NO CYCLE NO ORDER
NO CACHE )
Wenn kein Wert vorgegeben wird, soll der DB-Manager automatisch einen Wert generieren.
In der Beschreibung zu GENERATED BY DEFAULT steht folgendes:
For an identity column or row change timestamp column, the database manager inserts a specified value but does not verify that it is a unique value for the column unless the identity column or row change timestamp column has a unique constraint or a unique index that solely specifies the identity column or row change timestamp column.
Bei ensprechenden Constraint bin ich nun davon ausgegeben, das wenn eine bereits verwendete ID vom DB-Manager ermittelt wird, dieser automatische die nächst freie Id nimmt.
Ein entsprechende Constraint ist in der Tabelle definiert:
Code:
CONSTRAINT constname PRIMARY KEY( ID )
Die Anwendung bricht mir aber mit SQL0803 (Doppelter Schlüssel) weg, wenn keine ID im Insert angegeben ist und die vom DB-Manager ermittelte Id mit einer bereits manuell vorgegebenen Id übereinstimmt.
Was mache ich falsch?
Danke im Voraus!
Bookmarks