AUGE_OHR hat geschrieben:... mir würde ein "geschätzt", nicht "gezählt", auch schon reichen
so nun hab ich es wohl raus "wie" es funktioniert.
http://ulf.zeitform.de/en/documents/pos ... ml#sec-2-1
Was MySQL über das Spalten-Attribut AUTOINCREMENT realisieren, wird in PostgreSQL über den Data Type SERIAL erreicht: die automatische Erzeugung eines eindeutigen, nicht-zufälligen Wertes.
Dabei greift PostgreSQL explizit auf eine „SEQUENCE“ zurück, die die eigentlichen Werte liefert.
ok das haben wir uns ja so gedacht... und wie legt man die an ?
PostgreSQL legt mit jedem SERIAL Type ein „SEQUENCE“ genanntes Datenbankobjekt an:
aha das passiert also automatisch beim Type "
SERIAL"
aber wie ist es mit dem "hoch zählen" ?
Der Zugriff auf eine SEQUENCE erfolgt in der Regel über (in PostgreSQL vorhandene) Funktionen, hauptsächlich nextval() und currval()
ok soweit waren wir ja schon und wie sieht der (funktionierende) Code aus
Code: Alles auswählen
INSERT INTO customer VALUES (nextval('customer_id_seq'));
hm ... sowas hab ich doch schon mal gesehen ... richtig in den „
SEQUENCE“ steht so was.
hier also nun in Xbase++
man beachte die "___" ( 3x)
jetzt sind wir soweit das auch pgAdmin.EXE die Table öffnen / browsen kann
(wenn Import mit ANSI geklappt hat.)
nun gibt es noch einen kleinen Bonus : LastRec
damit komme ich an de Eigenschaften einer
SEQUENCE
Code: Alles auswählen
-[ RECORD 1 ]-+--------------------
sequence_name | customer_id_seq
last_value | 1
increment_by | 1
max_value | 9223372036854775807
min_value | 1
cache_value | 1
log_cnt | 1
is_cycled | f
is_called | f
der interessante Wert ist dabei
last_value ( LastRec)
last_value den höchsten, für das derzeitige Backend reservierten Wert
der SEQUENCE
jetzt "denke" ich das der Thread wohl wirklich
[erledigt] ist