Re: increment feld


[ ruban.de ] [ Antworten ] [ Forum ]

Geschrieben von Jürgen am November 10, 2003 um 09:33:

Als Antwort auf Re: increment feld geschrieben von Jürgen on November 07, 2003 um 10:31:

: : Ich habe eine tabelle mit
: : Primary key feld ID, wobei id ist als
: : not null generated always as identity (start with 1, increment by 1, no cache) definiert. Jetzt suche ich die
: : Möglichkeit ein Datensatz in die Tabelle einzufuegen und
: : ID selbst angeben, ohne,dass es wird automatisch generiert (durch SQL Anfrage).

:
: Hallo Vad,

: das funktioniert nicht mit Identity. Hier könntest du nur mit einer Sequence arbeiten. Dann kann eine eigene Nummer eingetragen werden. Die Sequence wird aber diese Nummer auch irgendwann mal lösen wollen. Durch einen Unique Key auf der entsprechenden Spalte diesen Fehler abfangen und dann die nächste Nummer lösen lassen (NEXTVAL FOR...), so lange bis diese einen gültigen Wert zurückbringt.

: Hope this helps :-)

: Jürgen

Hallo nochmal,

es gäbe auch die Möglichkeit anstelle der Option ALWAYS GENERATED bei der Identitiy-Spalte die Option BY DEFAULT anzugeben. Dann kann auch dort eine eigene Nummer eingetragen werden...also nicht der DEFAULT. Falls die Spalte UNIQUE ist (was sie sein sollte), wird ein SQL-Fehler entstehen. Diesen abfangen und dann entsprechend reagieren. Dies sowohl beim eigenen Erzeugen als auch beim Erzeugen mittels DEFAULT. Einfach so lange aufrufen, bis die nächste freie Nummer gelöst werden kann.

Gruss
Jürgen



Antworten:


Schreibe eine Antwort

Name:   
E-Mail:  

Thema:

Kommentar:

Optionale Link URL:   
Link Titel:                  
Optionale Image URL:


[ Antworten ] [ Forum ]