Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Menetapkan Semula Urutan Kunci Utama Postgres Tidak Segerak dengan Baris Jadual?

Bagaimanakah Saya Boleh Menetapkan Semula Urutan Kunci Utama Postgres Tidak Segerak dengan Baris Jadual?

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-23 11:41:10333semak imbas

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

Menyelesaikan Percanggahan Urutan Kunci Utama PostgreSQL

Jujukan kunci utama yang tidak sejajar dengan baris jadual anda boleh menyebabkan ralat kunci pendua yang mengecewakan. Ini sering berlaku semasa mengimport atau memulihkan data di mana integriti jujukan tidak dipelihara. Begini cara membetulkannya:

1. Cari ID Tertinggi:

Gunakan fungsi MAX() untuk mengenal pasti ID terbesar dalam jadual anda:

<code class="language-sql">SELECT MAX(id) FROM your_table;</code>

2. Dapatkan Nilai Urutan Seterusnya:

Pertanyaan ini menunjukkan nilai hasil jujukan seterusnya:

<code class="language-sql">SELECT nextval('your_table_id_seq');</code>

3. Tetapkan Semula Urutan (Jika Perlu):

Jika nilai jujukan seterusnya lebih kecil daripada ID maksimum jadual, tetapkan semula jujukan dalam transaksi untuk mengelakkan sisipan serentak:

<code class="language-sql">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;</code>

Sumber: Diadaptasi daripada perbincangan Forum Ruby.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menetapkan Semula Urutan Kunci Utama Postgres Tidak Segerak dengan Baris Jadual?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn