okatse
29.11.2019, 09:03:13
Witam
Problem dotyczy zapisywania do bazy. Gdy dwóch ludzi otworzy np: edycję produktu o ID =1. Oboje zobaczą ten samo formularz i te same dane w nim. Pierwszy poszedł na kawę a drugi w tym czasie zmodyfikował dane i zapisał do bazy. Pierwszy wraca z kawy patrzy na formularz ale widzi w nim stare dane (bo ktoś w tym czasie je już poprawił) - nieświadomy niczego wprowadza swoje dane i zapisuje. W momencie zapisu powinien dostać info że dane w formularzu podczas jego nie obecności zostały zmienione.
Zna ktoś jakiś sposób na to? Blokowanie rekordu na czas edycji w formularzu nie wchodź i w grę.
kapslokk
29.11.2019, 09:12:43
Wstaw do tabeli pole "modifiedAt" z czasem ostatniej modyfikacji, przy pobieraniu rekordu do edycji zapiszesz sobie ten czas, później przy próbie zapisu rekordu najpierw porównujesz czy zapisana data jest taka sama jak w bazie, jeśli nie to wywalasz informację, że dane się zmieniły.
Tomplus
29.11.2019, 15:12:43
Możesz sprawdzać różnicę danych sprawdzać checksum rekordów. Albo wchodząc na dokument blokować do niego dostęp, który będzie odblokowany po pewnym czasie, lub po kliknięciu czynności.
Wtedy jak ktoś inny wejdzie na dokument będzie tylko do odczytu.
Pyton_000
15.12.2019, 20:24:14
Jeśli masz pole typu `updatedAt` to je pobierasz. Potem przy zapisywaniu robisz tak:
UPDATE table SET col1 = val1, updatedAt = NOW()
WHERE id = 1 AND updatedAt = WartośćPobranaWcześniej.
Jesli zwórci Ci to zapytanie 1 to znaczy że poszło ok. Inaczej klops.
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.