Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Ketika saya MEMASUKKAN beberapa baris ke dalam tabel MySQL, apakah id akan bertambah 1 setiap kali?

Jawabannya adalah:ya, itu tergantung.

Dalam kasus myisam, jawabannya pasti ya, karena urutan myisam memasukkan permintaan.

Namun, dalam kasus innodb, perilaku tersebut dapat dikonfigurasi sejak mysql v5.1. sebelum v5.1, maka jawaban untuk InnoDB juga ya, setelah itu tergantung pada innodb_autoinc_lock_mode pengaturan. Lihat dokumentasi mysql di Konfigurasi auto_increment InnoDB untuk detailnya .

Untuk memberi Anda sorotan, ada 3 innodb_autoinc_lock_mode pengaturan:

  1. tradisional (0)
  2. konsekutif (1) - default
  3. disisipkan (2)

Kesenjangan lebih lanjut dapat dialami dalam nilai auto_increment, jika transaksi telah dibatalkan. Sisipan massal hanya dapat dibatalkan secara keseluruhan.

PERBARUI: Seperti yang dijelaskan di atas, Anda akan mendapatkan skenario 1) atau 2) , jika Anda menggunakan

  • mesin tabel myisam
  • atau innodb pre mysql v5.1
  • atau innodb dengan mysql v5.1 atau yang lebih baru dan innodb_autoinc_lock_mode adalah 0 atau 1

Tidak ada cara untuk mengetahui mana yang dimasukkan terlebih dahulu.

Anda mungkin mendapatkan skenario 3) atau 4) jika Anda menggunakan

  • innodb dengan innodb_autoinc_lock_mode 2

Sekali lagi, tidak ada cara untuk mengetahui bagaimana dan mengapa mysql mencampuradukkan urutan record.

Jadi, jika pertanyaan Anda terkait dengan fakta bahwa Anda memasukkan 3 catatan dengan penyisipan massal dan last_insert_id() mengembalikan nilai auto_increment dari catatan yang dimasukkan pertama saja, dan Anda ingin mendapatkan id dari 2 catatan lainnya dengan tambahan sederhana adalah bahwa Anda mungkin perlu memeriksa konfigurasi mysql berdasarkan mesin tabel dan versi mysql yang digunakan.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara terbaik untuk menyimpan jam kerja dan menanyakannya secara efisien

  2. Pilih stempel waktu pertama dan terakhir di mana ID pengguna unik

  3. Desain Basis Data:Kunci komposit vs kunci utama satu kolom

  4. MAMP dengan Laravel Unix Socket

  5. Cara yang tepat untuk menyimpan zona waktu dalam database?