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

Các cột tự động tăng dần của MySQL trên GIAO DỊCH, COMMIT và ROLLBACK

Không, cơ chế tăng tự động phải hoạt động bên ngoài phạm vi giao dịch, vì người dùng khác có thể đang chèn vào cùng một bảng trước khi bạn kết thúc giao dịch của mình. Giao dịch của người dùng khác phải có thể phân bổ giá trị tiếp theo, trước khi biết liệu giao dịch của bạn có đang sử dụng giá trị bạn vừa phân bổ hay không.

Nhận xét của bạn:Nếu tôi có thể nói rõ hơn, bất kỳ thay đổi nào trong phạm vi giao dịch đều có thể được lùi lại. Bộ đếm gia tăng tự động không được khôi phục lại, vì vậy nó không tuân theo tính nguyên tử của các giao dịch. Nó cũng không tuân theo sự cô lập vì một giao dịch khác nhận được giá trị tiếp theo mặc dù giao dịch của bạn chưa được cam kết.

Cách hoạt động của tính năng tự động tăng có nghĩa là đôi khi, nếu bạn chèn một số hàng và sau đó quay lại giao dịch của mình, các giá trị bạn đã phân bổ với tính năng tự động tăng sẽ bị mất vĩnh viễn!

Nhưng điều này không sao. Các giá trị khóa chính phải là duy nhất, nhưng chúng không cần liên tiếp. Nói cách khác, chúng không phải là số hàng, và bạn không nên sử dụng chúng như vậy. Vì vậy, bạn sẽ không bao giờ cần giảm các giá trị được tạo bằng cách tăng tự độ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. Django - cài đặt lỗi mysqlclient:mysqlclient 1.3.13 hoặc mới hơn là bắt buộc; bạn có 0.9.3

  2. Kiểm tra NULL trên một Bộ sưu tập trong các truy vấn JPQL?

  3. Cách hàm OCTET_LENGTH () hoạt động trong MySQL

  4. Cách nhóm các phạm vi liên tục bằng MySQL

  5. Tìm nạp hàng đơn, cột đơn với PDO