Mysql
 sql >> база данни >  >> RDS >> Mysql

Увеличаването на поле в MySQL атомарно ли е?

Записването е атомарно, но увеличение също изисква четене. Така че въпросът е:Сигурни ли сте, че четенето е безопасно, с други думи, сигурни ли сте, че друга нишка, извършваща увеличение, няма да завърши със същата стойност, която трябва да бъде увеличена? имам съмнения. 100% правилният начин да направите това би бил.

-- 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. Как да задам пълен sql дата и час с помощта на java, а не само датата?

  2. Java PreparedStatement и ПРИ АКТУАЛИЗИРАНЕ НА ДУБЛИКАТ КЛЮЧ:как да разбера дали редът е бил вмъкнат или актуализиран?

  3. Избягване на SQL инжектиране в генериран от потребителя SQL-редовен израз

  4. Създаване на таблица програмно с помощта на MyBatis и MySql

  5. Как да стартирате MySQL сървър на Windows XP