Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Mencegah Penambahan Auto InnoDB pada Kemas Kini Kunci Pendua?

Bagaimana untuk Mencegah Penambahan Auto InnoDB pada Kemas Kini Kunci Pendua?

Mary-Kate Olsen
Lepaskan: 2024-11-15 06:20:03
asal
282 orang telah melayarinya

How to Prevent InnoDB Auto Incrementing on Duplicate Key Updates?

Kawalan Peningkatan Auto InnoDB pada Kekunci Duplikat

Enjin InnoDB MySQL menyediakan ciri kunci utama yang meningkat secara automatik untuk jadual, menjana pengecam unik secara automatik untuk setiap baris. Walau bagaimanapun, secara lalai, InnoDB juga menambah kunci utama pada kemas kini kunci pendua, yang membawa kepada nilai tidak berturut-turut.

Mengelakkan Peningkatan Auto pada Pendua

Untuk mengelakkan isu ini dan mengekalkan nilai autokenaikan berturut-turut, anda boleh mengubah suai pilihan konfigurasi innodb_autoinc_lock_mode. Dengan menetapkannya kepada "0", anda bertukar kepada mod penguncian autokenaikan "tradisional", yang memastikan bahawa nilai berturut-turut diberikan kepada lajur AUTO_INCREMENT walaupun untuk kemas kini kunci pendua.

Mengkonfigurasi Auto-InnoDB Mod Penambahan

Tetapkan nilai innodb_autoinc_lock_mode dalam fail konfigurasi MySQL anda, biasanya terletak di /etc/my.cnf atau /my.ini.

[mysqld]
innodb_autoinc_lock_mode=0
Salin selepas log masuk

Struktur Jadual dan Contoh Pertanyaan

Struktur jadual dan pertanyaan anda dalam konteks yang disediakan adalah seperti berikut:

CREATE TABLE IF NOT EXISTS `table` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `field1` varchar(200) NOT NULL,
  `field2` varchar(255) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `field1` (`field1`),
  KEY `id` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

INSERT INTO table ( field1, field2 ) VALUES (:value1, :value2)
            ON DUPLICATE KEY
            UPDATE field1 = :value1, field2 = :value2 
Salin selepas log masuk

Dengan innodb_autoinc_lock_mode ditetapkan kepada "0," pertanyaan ini akan mengemas kini rekod pendua tanpa penambahan lajur id, memastikan nilai berturut-turut untuk sisipan baharu.

Awas:

Perhatikan bahawa bergantung pada ID autokenaikan berturut-turut dalam aplikasi anda bukanlah amalan yang baik. Nilai kenaikan automatik bertujuan untuk memberikan pengecam unik dan tidak boleh digunakan untuk tujuan pesanan atau pengisihan.

Atas ialah kandungan terperinci Bagaimana untuk Mencegah Penambahan Auto InnoDB pada Kemas Kini Kunci Pendua?. 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