PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Starten Sie die Primärschlüsselnummern vorhandener Zeilen neu, nachdem Sie den größten Teil einer großen Tabelle gelöscht haben

Löschen Sie zuerst den Primärschlüssel und erstellen Sie eine temporäre Sequenz.

alter table mytable drop constraint mydata_pkey;
create temporary sequence temp_seq;

Verwenden Sie die Sequenz zum Aktualisieren:

update mytable
set id = nextval('temp_seq');

Erstellen Sie den Primärschlüssel neu und löschen Sie die Sequenz

alter table mytable add primary key (id);
drop sequence temp_seq;

Wenn es eine Fremdschlüsselabhängigkeit zu dieser Tabelle gibt, müssen Sie sich zuerst darum kümmern und die Aktualisierung wird ein komplexeres Verfahren sein.