Witam,
Mam takie zapewne banalne, ale mi niedające spokoju pytanie.
Załóżmy że chce wydawać użytkownikom mojej aplikacji kody które będą sobie odbierać kliknięciem w jakiś przycisk.
Struktura takiego kodu np.taka:
01/01/STY/2022/AABB
Gdzie pierwsza liczba to numer wydanego kodu na dzień, data i jakieś losowe litery. I kolejnego dnia w kodzie data się zwiększa a liczba początkowa znowu leci od jedynki, I to tyle z założeń.
I moje pytanie, jaka jest najbardziej optymalna metoda, aby takie kody do bazy wprowadzać jako „kolejny” kod tego samego dnia
Ja sobie wyobrażam że jest jakaś tabela z wierszami code (string) , userid (int)
I teraz w PHP:
- Zapytaniem pobieram ostatni wiersz
- Sprawdzam jaką wartość ma komórka code np.
20/01/STY/2022/AABB
- Jaką funkcją wyciągam z tego stringa pierwszy człon i zwiększam o 1 czyli
21/01/STY/2022/AABB
- Robie insert do tabeli
No i tu teraz mam taką rozkminę, co w sytuacji gdzie powiedzmy teoretycznie aplikacja będzie miała mnóstwo użytkowników którzy będą chcieli odebrać kod.
Czy jest możliwa sytuacja że na poziomie „użytkownika a” który będzie w kroku 2/3 operacji, „użytkownik b” zacznie krok 1 czym samym dla nich obu kod 20/01/STY/2022/AABB
będzie ostatnim i w efekcie czego oboje mogą dodać kod 21/01/STY/2022/AABB
do bazy?
Czy sytuacja jest niemożliwa? Np. Przez to że kod wykona się na tyle szybko że niemożliwym jest wbić się w te widełki.
Czy sytuacja jest możliwa i najlepiej byłby się przez nią zabezpieczyć np. Sprawdzeniem czy w tabeli nie istnieje kod który chcemy dodać, jak istnieje potwórz całą operację. - i to umieścić po 3 kroku
Czy wql. Cały algorytm dodawania jest bez sensu i należałby to ubrać z innej strony?