W tabeli, gdzie każdy wiersz posiada licznik (tylko wartość całkowita), muszę dostać aktualną wartość i zwiększyć ją w tym samym czasie .
Skutecznie chcę to zrobić:
SELECT counter FROM table WHERE id=123
UPDATE table SET counter=counter+1 WHERE id=123
Ale robienie tego, ponieważ dwa zapytania nie są oczywiście bezpieczne dla wątków: wiele procesów wykonujących tę samą czynność (w tym samym wierszu) może otrzymać tę samą wartość licznika. Muszę im wszystkim być wyjątkowa, więc każdy proces będzie uzyskać rzeczywistą wartość prądu i zwiększać ją o jeden.
Mogę wymyślić konstrukcję, w której wdrażam ręczną blokadę na rząd, ale zastanawiam się, czy istnieje łatwiejszy sposób na zrobienie tego?