Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Menetapkan Semula Urutan Kunci Utama Postgres Tidak Segerak dengan Baris Jadual?
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!