![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 247 Pomógł: 11 Dołączył: 5.09.2009 Ostrzeżenie: (0%) ![]() ![]() |
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 ? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 247 Pomógł: 11 Dołączył: 5.09.2009 Ostrzeżenie: (0%) ![]() ![]() |
Ale row-lock to działa chyba dla UPDATE, a tu mamy:
odczyt 1 odczyt 2 UPDATE 1 UPDATE 2 Ten post edytował wiewiorek 20.01.2011, 20:01:06 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 4.10.2025 - 02:23 |