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

MySQL có sử dụng lại ID đã xóa khi áp dụng Tự động tăng không

InnoDB đặt lại trường auto_increment khi bạn khởi động lại cơ sở dữ liệu.

Khi khởi động lại InnoDB, nó sẽ tìm giá trị cao nhất trong cột và sau đó bắt đầu từ đó.

Điều này sẽ không xảy ra trong MyISAM vì nó lưu vào bộ nhớ cache id tăng cuối cùng.

Cập nhật

Tính năng / lỗi này đã xuất hiện từ năm 2003 và có thể dẫn đến các vấn đề nghiêm trọng. Lấy ví dụ bên dưới,

  1. Bảng t1 có khóa chính tự động nhập.

  2. Bảng t2 có một cột cho khóa chính trong t1 không có "ràng buộc" khóa ngoại. Nói cách khác, khi một hàng bị xóa ở t1, các hàng tương ứng ở t2 sẽ không có.

  3. Như chúng ta đã biết với khởi động lại InnoDB, một id có thể được cấp lại. Do đó, các hàng mồ côi trong t2 có thể được liên kết sai với các hàng mới trong t1.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Truy vấn đếm số lượng bảng tôi có trong MySQL

  2. chọn bản ghi trùng lặp và đếm bản ghi từ dấu phẩy được phân tách trong mysql

  3. Có khả năng ANY_VALUE cho mysql 5.6 không?

  4. Truy vấn riêng biệt của Django MySQL để nhận nhiều giá trị

  5. Một MySQL DELETE thành công trả về điều gì? Làm cách nào để kiểm tra xem XÓA có thành công không?