Hallo zusammen,
ich versuche in einer Tabelle Datensätze einzufügen deren ID automatisch mit dem Befehl sequenzname.NEXTVAL erhöht wird. Beim Erstellen der Sequenz habe ich Start With 1 und als Inkrement auch 1 angegeben. Trotzdem wird beim Anlegen eines Datensatzes immer eine Nummer übersprüngen (2,4,6,8 usw.) Es ist aber für mich wichtig das die Nummer laufend ist ohne Lücken dazwischen, also 1,2,3,4 usw. Ein weiteres Problem besteht darin, dass wenn eine oder mehrere Einfügeoperationen fehlschlagen, beim nächsten erfolgreichen Einfügen sogar mehrere Nummern übersprüngen werden (z.b. 1,2,5,9 usw.)
Ich habe herausgefunden, dass wenn ich den Befehl .CURRVAL einsetze, also z.B. INSERT INTO TABLE VALUES (TAB_SEQ.CURRVAL, 'Test')
die Inkrementierung um 1 funktioniert jedoch nur wenn ich vorher NEXTVAL ausgeführt habe. Ansonsten erhalte ich folgende Fehlermeldung:
"ORA-08002: Sequenz TAB_SEQ.CURRVAL ist in dieser Session noch nicht definiert"
Ich möchte die SQL-Anweisung in einem Java-Programm verwenden und es ist wie schon gesagt wichtig, dass der erste Datensatz bei 1 anfängt und alle Anderen an die zuletzt eingetragene ID anknüpfen. Wie stelle ich das genau an? Gibt es vielleicht auch eine Möglichkeit nachträglich die Sequenz für eine Primärschlüsselspalte zu ändern bzw. neu zu erstellen, so dass alle ID's der Spalte den gewünschten Kriterien entsprechen?