„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie setze ich Postgres -Primärschlüsselsequenz aus Synchronisation mit Tabellenzeilen zurück?

Wie setze ich Postgres -Primärschlüsselsequenz aus Synchronisation mit Tabellenzeilen zurück?

Gepostet am 2025-04-17
Durchsuche:632

How Can I Reset a Postgres Primary Key Sequence Out of Sync with Table Rows?

löst postgresql primäre Schlüsselsequenz Diskrepanzen

Eine primäre Schlüsselsequenz, die mit den Zeilen Ihrer Tabelle falsch ausgerichtet ist, kann frustrierende doppelte Schlüsselfehler verursachen. Dies geschieht häufig bei Datenimporten oder Wiederherstellungen, bei denen die Sequenzintegrität nicht erhalten bleibt. So beheben Sie es:

1. Finde die höchste ID:

Verwenden Sie die Funktion max () , um die größte ID in Ihrer Tabelle zu identifizieren:

SELECT MAX(id) FROM your_table;

2. Holen Sie sich den nächsten Wert der Sequenz:

Diese Abfrage zeigt den nächsten Wert der Sequenz:

SELECT nextval('your_table_id_seq');

3. Setzen Sie die Sequenz zurück (falls erforderlich):

Wenn der nächste Wert der Sequenz kleiner als die maximale ID der Tabelle ist, setzen Sie die Sequenz innerhalb einer Transaktion zurück, um gleichzeitige Einfügungen zu verhindern:

BEGIN;
LOCK TABLE your_table IN EXCLUSIVE MODE;
SELECT setval('your_table_id_seq', (SELECT GREATEST(MAX(your_id), nextval('your_table_id_seq') - 1) FROM your_table));
COMMIT;

Quelle: adaptiert aus einer Ruby Forum -Diskussion.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3