PostgreSQL Sequenz auf aktuellen Stand bringen
Autor: Ingmar Pforr
eingetragen: Dienstag, 17. Juli 2012 um 18:28 Uhr (29/2012 Kalenderwoche)
geändert: Dienstag, 17. Juli 2012 um 18:32 Uhr (29/2012 Kalenderwoche)
Keywords: PostgreSQL Sequenz max Primary Key
Kategorien: DB: PostgreSQL,
Text:
Durch SQL Scripts Inserts mit Primary Key-IDs oder Einfügen von Daten mit PgAdmin (es müssen ebenfalls Primary Key-IDs gesetzt werden) wird die Sequenz nicht geupdatet, d.h. dieser Vorgang wird umgangen. Dann sind Sequenz und PK IDs nicht mehr synchron.
Mit diesem Befehl wird die Sequenz neu gesetzt, es muss nur Tabellenname und PK-Spalte bekannt sein, nicht der Sequenzname.
Quellcode:
SELECT pg_catalog.setval(pg_get_serial_sequence('table_name', 'id'), (SELECT MAX(id) FROM table_name)+1);
http://stackoverflow.com/questions/244243/how-to-reset-postgres-primary-key-sequence-when-it-falls-out-of-sync
(Das +1 kann laut IP weggelassen werden, da so immer eine Lücke entsteht. Das implizite nextval bei der Datensatzerzeugung inkrementiert automatisch um 1. )