Bagaimanakah Saya Boleh Menghalang Peningkatan Auto MySQL pada Sisipan Duplikat?

Linda Hamilton
Lepaskan: 2024-11-21 06:38:09
asal
482 orang telah melayarinya

How Can I Prevent MySQL Auto-Increment on Duplicate Inserts?

Mencegah Peningkatan Auto pada Sisipan Duplikat MySQL

Apabila menggunakan MySQL 5.1.49, memasukkan baris pendua ke dalam jadual InnoDB dengan penambahan automatik kunci utama boleh mengakibatkan penambahan medan ID walaupun sisipan diabaikan. Ini boleh membawa kepada jurang yang tidak diingini dalam jujukan ID.

Penyelesaian

Untuk mengelakkan kenaikan automatik pada sisipan pendua, anda boleh menggunakan pernyataan INSERT yang diubah suai:

INSERT INTO tablename (tag)
SELECT $tag
FROM tablename
WHERE NOT EXISTS(
    SELECT tag
    FROM tablename
    WHERE tag = $tag
)
LIMIT 1
Salin selepas log masuk

Di mana $tag ialah nilai tag yang ingin anda masukkan. Pendekatan ini melakukan semakan untuk melihat sama ada teg sudah wujud sebelum mencuba memasukkan. Jika teg tidak wujud, sisipan dilakukan dan kaunter kenaikan automatik tidak terjejas.

Kelebihan Pendekatan ini:

  • Menghalang kenaikan automatik pada pendua: Ia memastikan bahawa pembilang kenaikan automatik hanya dinaikkan apabila teg baharu dimasukkan.
  • Pantas: Semakan EXISTS dilaksanakan dengan cekap jika jadual diindeks dengan betul.
  • Mengendalikan kes teg pertama: Anda boleh menyemai jadual dengan teg pemegang tempat atau melakukan semakan berasingan untuk jadual kosong untuk mengendalikan sisipan teg pertama.

Dengan menggunakan pernyataan INSERT yang diubah suai ini, anda boleh menghalang pembilang kenaikan automatik daripada meningkat pada sisipan pendua, memastikan urutan ID yang berjujukan dan bebas jurang.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menghalang Peningkatan Auto MySQL pada Sisipan Duplikat?. 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan