setval

Hallo,

Ich habe überall gesucht und habe noch nicht die Lösung gefunden. Ich importiere daten von MySQL in PostgreSQL 8.2.
In Tabellen wo es ein autoincrement Feld gibt, mache ich daraus ein SERIAL und probiere mit setval den MAX Wert + 1 zu setzen damit die zukünftige INSERT richtig funktionieren.

Zum Beispiel:
select setval(id_model,200) from model

Ich bekomme aber die Fehlermeldung:
ERROR: could not open relation with OID 3
SQL state: XX000

Hat jemand eine Idee was es bedeutet?

Danke
Hubert Retif

Der erste Parameter von setval sollte der Name der Sequence sein, und zwar in ‘’.

Also, falls Deine Sequence den Namen id_model hat, müßte es richtig lauten:

select setval('id_model', 200);

Vermutlich ist aber das nur der Name der Spalte, nicht der Sequence.

test=# create table foo (id_model serial);
NOTICE:  CREATE TABLE will create implicit sequence "foo_id_model_seq" for serial column "foo.id_model"
CREATE TABLE
test=*#

Deine Sequence ist nun also foo_id_model_seq, der Aufruf dementsprechend.

Und falls Dir der Name der Sequence nicht bekannt ist:

test=*# select pg_get_serial_sequence('foo', 'id_model');
 pg_get_serial_sequence
-------------------------
 public.foo_id_model_seq
(1 row)

Andreas

Danke Andreas. Jetzt weiss ich wie…