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
471 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:

    SELECT MAX(id) FROM your_table;
    Salin selepas log masuk
  2. Periksa Nombor Urutan Seterusnya:

    Seterusnya, semak nilai urutan seterusnya:

    SELECT nextval('your_table_id_seq');
    Salin selepas log masuk

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

  3. Mulakan Transaksi:

    Balut pembetulan dalam transaksi untuk integriti data:

    BEGIN;
    Salin selepas log masuk
  4. Kunci Meja Eksklusif:

    Untuk mengelakkan pengubahsuaian serentak, kunci jadual secara eksklusif:

    LOCK TABLE your_table IN EXCLUSIVE MODE;
    Salin selepas log masuk
  5. Laraskan Nilai Jujukan:

    Gunakan arahan ini untuk mengemas kini urutan:

    SELECT setval('your_table_id_seq', GREATEST((SELECT MAX(your_id) FROM your_table), (SELECT nextval('your_table_id_seq') - 1)));
    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:

    COMMIT;
    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!

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