Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Czy zwiększanie pola w MySQL jest niepodzielne?

Zapis jest niepodzielny, ale przyrost wymaga również odczytu. Pytanie brzmi:Czy jesteś pewien, że odczyt jest bezpieczny, innymi słowy, czy na pewno inny wątek wykonujący inkrementację nie zakończy się z tą samą wartością do zwiększenia? Mam wątpliwości. W 100% prawidłowym sposobem na zrobienie tego byłoby.

-- 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. Biblioteki MySQL C API dla iPhone'a

  2. Zamiana sekund na GG:MM:SS

  3. Gdy pętla PHP get_result nie działa

  4. Tunel SSH do połączenia Python MySQLdb

  5. PHP:mysql_fetch_array() oczekuje, że parametr 1 będzie zasobem, podana wartość logiczna