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

Tăng một trường trong MySQL nguyên tử?

Viết là nguyên tử nhưng một gia số cũng yêu cầu đọc. Vì vậy, câu hỏi đặt ra là:Bạn có chắc việc đọc là an toàn, hay nói cách khác, bạn có chắc chắn một luồng khác đang thực hiện tăng dần sẽ không kết thúc với cùng một giá trị được tăng lên không? Tôi có nghi ngờ. Cách làm đúng 100% sẽ là.

-- begin transaction here

select counter from myCounters where counter_id = 1 FOR UPDATE;

-- now the row is locked and nobody can read or modify its values

update myCounters set counter = ? where id = 1;

-- set ? to counter + 1 programmatically

commit; -- and unlock...


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mySQL - đối sánh đầu vào biểu mẫu latin (tiếng Anh) với dữ liệu utf8 (không phải tiếng Anh)

  2. Chèn mã html vào bảng mysql

  3. Nhiều điều kiện AND MySQL

  4. Làm cách nào để hủy tất cả các quy trình trong danh sách quy trình hiển thị Mysql?

  5. MySQL:Nối trái và cột có cùng tên trong các bảng khác nhau