Rumah > pangkalan data > tutorial mysql > Bagaimanakah Saya Menyegerakkan Semula Urutan Kunci Utama PostgreSQL Tidak Segerak dengan Baris Jadual?

Bagaimanakah Saya Menyegerakkan Semula Urutan Kunci Utama PostgreSQL Tidak Segerak dengan Baris Jadual?

DDD
Lepaskan: 2025-01-23 12:09:11
asal
434 orang telah melayarinya

How Do I Resynchronize a PostgreSQL Primary Key Sequence Out of Sync with Table Rows?

Menyelesaikan Konflik Urutan Kunci Utama PostgreSQL

Kegagalan memasukkan data disebabkan ralat kunci pendua selalunya menunjukkan jujukan kunci utama tidak segerak dengan baris jadual. Ini biasanya berlaku selepas proses import atau pemulihan pangkalan data. Begini cara untuk membetulkannya:

  1. Sahkan Ketidakseimbangan Urutan:

    Pertama, tentukan ID sedia ada tertinggi:

    <code class="language-sql">SELECT MAX(id) FROM your_table;</code>
    Salin selepas log masuk
  2. Periksa Nombor Urutan Seterusnya:

    Seterusnya, semak nilai urutan seterusnya:

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

    Jika nilai jujukan kurang daripada ID maksimum jadual, penyegerakan diperlukan.

  3. Mulakan Transaksi:

    Balut pembetulan dalam transaksi untuk integriti data:

    <code class="language-sql">BEGIN;</code>
    Salin selepas log masuk
  4. Kunci Meja Eksklusif:

    Untuk mengelakkan pengubahsuaian serentak, kunci jadual secara eksklusif:

    <code class="language-sql">LOCK TABLE your_table IN EXCLUSIVE MODE;</code>
    Salin selepas log masuk
  5. Laraskan Nilai Jujukan:

    Gunakan arahan ini untuk mengemas kini urutan:

    <code class="language-sql">SELECT setval('your_table_id_seq', GREATEST((SELECT MAX(your_id) FROM your_table), (SELECT nextval('your_table_id_seq') - 1)));</code>
    Salin selepas log masuk

    Ini menetapkan jujukan kepada ID maksimum jadual yang lebih besar atau nilai jujukan semasa tolak satu.

  6. Komit Transaksi:

    Tamatkan perubahan:

    <code class="language-sql">COMMIT;</code>
    Salin selepas log masuk
  7. Lepaskan Kunci Meja:

    Kunci meja dilepaskan secara automatik selepas transaksi dilakukan.

Mengikut langkah ini memastikan jujukan kunci utama sejajar dengan data jadual, menghapuskan ralat kunci pendua masa hadapan semasa sisipan.

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

sumber:php.cn
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan