2012-04-11 7 views
7

Ich habe manuell einige Zeilen in die Tabelle eingefügt und auch die ID (auto_increment) manuell eingerichtet. Wenn ich jetzt versuche, eine neue Zeile über meine App in die DB-Tabelle einzufügen, bekomme ich zu der DB-Tabelle den Fehler, dass der erstellte ID-Wert bereits existiert.PostgresSQL - wie man den nächsten Wert von auto_increment manuell einrichtet?

Wie kann ich manuell den nächsten ID-Wert einstellen (zum Beispiel, in der Tabelle muss ich IDs, also wie an PostgreSQL zu sagen, dass die nächste ID seit der Nummer 3 gezählt werden soll)?

Antwort

16

http://www.postgresql.org/docs/9.1/static/functions-sequence.html

select setval('sequence-name', <new-value>); 

Sie können die Reihenfolge Namen aus der der Tabellendefinition erhalten:

id  | integer    | not null default nextval('id_seq'::regclass) 

In diesem Fall wird die Sequenz namens 'id_seq'

Edit (10x @ Glenn):

SELECT setval('id_seq', max(id)) FROM table; 
+1

Und gesetzt auf das Ergebnis der SELECT MAX (id) +1 VON myTable. – Glenn

2

Ich denke, es ist ein einfacher Weg:

ALTER SEQUENCE "seq_product_id" RESTART WITH 10