Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Khi tôi CHÈN nhiều hàng vào một bảng MySQL, các id có được tăng thêm 1 không?

Câu trả lời là:tốt, nó phụ thuộc.

Trong trường hợp myisam, câu trả lời chắc chắn là có, vì chuỗi myisam chèn các yêu cầu.

Tuy nhiên, trong trường hợp innodb, hành vi có thể định cấu hình kể từ mysql v5.1. trước v5.1, thì câu trả lời cho InnoDB cũng là có, sau đó nó phụ thuộc vào innodb_autoinc_lock_mode thiết lập. Xem tài liệu mysql về cấu hình InnoDB auto_increment để biết chi tiết .

Để cung cấp cho bạn những điểm nổi bật, có 3 innodb_autoinc_lock_mode cài đặt:

  1. truyền thống (0)
  2. consequtive (1) - mặc định
  3. xen kẽ (2)

Những khoảng trống khác có thể xảy ra trong giá trị auto_increment, nếu một giao dịch đã được khôi phục. Chỉ có thể thu hồi toàn bộ một phụ trang hàng loạt.

CẬP NHẬT: Như được mô tả ở trên, bạn sẽ nhận được kịch bản 1) hoặc 2) , nếu bạn sử dụng

  • công cụ bảng myisam
  • hoặc innodb trước mysql v5.1
  • hoặc innodb với mysql v5.1 trở lên và innodb_autoinc_lock_mode là 0 hoặc 1

Không có cách nào để biết cái nào được chèn trước.

Bạn có thể nhận được tình huống 3) hoặc 4) nếu bạn sử dụng

  • innodb với innodb_autoinc_lock_mode 2

Một lần nữa, không có cách nào để biết cách và tại sao mysql trộn thứ tự của các bản ghi.

Vì vậy, nếu câu hỏi của bạn liên quan đến việc bạn chèn 3 bản ghi bằng cách chèn hàng loạt và last_insert_id () trả về giá trị auto_increment của bản ghi được chèn đầu tiên và bạn muốn lấy id của 2 bản ghi còn lại bằng cách thêm đơn giản là bạn có thể cần kiểm tra cấu hình của mysql dựa trên công cụ bảng và phiên bản mysql được sử dụng.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ví dụ về TIMEDIFF () - MySQL

  2. Tìm kiếm tính khả dụng với MySQL (và PHP)?

  3. LỖI 1215:Không thể thêm ràng buộc khóa ngoại khi sử dụng ON DELETE SET NULL

  4. Vấn đề backtick Bash + MySQL -d

  5. Mysqli không cho phép nhiều truy vấn?