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

Câu hỏi dễ dàng về mysql liên quan đến khóa chính và một bộ chèn

Nhận xét làm rõ của bạn cho biết rằng bạn quan tâm đến việc đảm bảo rằng LAST_INSERT_ID () không đưa ra kết quả sai nếu một INSERT đồng thời khác xảy ra. Hãy yên tâm rằng có thể sử dụng LAST_INSERT_ID () an toàn bất kể hoạt động đồng thời khác. LAST_INSERT_ID () chỉ trả về ID gần đây nhất được tạo trong phiên hiện tại.

Bạn có thể tự mình thử:

  1. Mở hai cửa sổ shell, chạy mysqlclient trong mỗi cửa sổ và kết nối với cơ sở dữ liệu.
  2. Shell 1:INSERT vào một bảng với khóaAUTO_INCREMENT.
  3. Shell 1:SELECT LAST_INSERT_ID (), xem kết quả.
  4. Shell 2:INSERT vào cùng một bảng.
  5. Shell 2:SELECT LAST_INSERT_ID (), xem kết quả khác với shell 1.
  6. Shell 1:SELECT LAST_INSERT_ID () một lần nữa, xem kết quả lặp lại trước đó.

Nếu bạn nghĩ về nó, đây là cách duy nhất có ý nghĩa. Tất cả các cơ sở dữ liệu hỗ trợ cơ chế khóa tự động tăng dần đều phải hoạt động theo cách này. Nếu kết quả phụ thuộc vào điều kiện chạy đua với các ứng dụng khách khác có thể CHÈN đồng thời, thì sẽ không có cách nào đáng tin cậy để nhận giá trị ID được chèn cuối cùng trong phiên hiện tại của bạn.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách giải quyết lỗi MySQL max_user_connections

  2. Xóa dữ liệu khỏi cơ sở dữ liệu MySQL

  3. Ứng dụng bị đóng băng khi cơ sở dữ liệu được gọi

  4. Số lần đếm Mysql của chuỗi con, sau đó sắp xếp theo thứ tự

  5. Kiểm tra xem IP có trong mạng con không