Rumah  >  Artikel  >  pangkalan data  >  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
Mary-Kate Olsenasal
2024-11-15 06:20:03202semak imbas

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

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 

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