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
Lepaskan: 2025-01-23 11:41:10
asal
336 orang telah melayarinya

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>
Salin selepas log masuk

2. Dapatkan Nilai Urutan Seterusnya:

Pertanyaan ini menunjukkan nilai hasil jujukan seterusnya:

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

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>
Salin selepas log masuk

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 Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan