Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL] modyfikacja rekordu przez 2 userów jednocześnie
Forum PHP.pl > Forum > Przedszkole
wiewiorek
Załóżmy, że mamy jakąś tabelę do przechowywania tematów forum internetowego, w tej tabeli jest m. in. kolumna LICZBA zawierająca ilość odpowiedzi do danego tematu. Kiedy użytkownik dodaje odpowiedź do jakiegoś tematu i klika na formularzu Dodaj, to pobierana jest z tabeli ilość odpowiedzi na danym temat z kolumny LICZBA i wartość jest zwiększana o 1, np. przez wykonanie dwóch zapytań w PHP czy odpalenie triggera.

Czy może dojść do takiej sytuacji:
LICZBA = 0
User 1 dodaje odpowiedź, następuje dla niego odczyt LICZBA = 0
w międzyczasie User 2 dodaje odpowiedź, następuje dla niego odczyt LICZBA = 0
zapis dla User 1 LICZBA = 0 + 1 = 1
zapis dla User 2 LICZBA = 0 + 1 = 1

finalnie LICZBA = 1 zamiast 2 - czy to możliwe czy nie ?
lord2105
nie
kalmaceta
nie j.w., MyISAM - table-lock, InnoDB row-lock
wiewiorek
Ale row-lock to działa chyba dla UPDATE, a tu mamy:
odczyt 1
odczyt 2
UPDATE 1
UPDATE 2
wookieb
Transakcje http://dev.mysql.com/doc/refman/5.0/en/commit.html
PanGuzol
  1. UPDATE tabela SET pole=pole+1

I po problemie ;]
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.