Máte velmi blízko ke svému designu, ale ne tak docela.
Za prvé, váš stůl na události musí obsahovat počet vstupenek, které jsou na vaši událost stále k dispozici (kromě čehokoli jiného, co tam chcete).
Za druhé, vaše tabulka úschovy u třetí osoby musí obsahovat sloupec DATETIME, který uvádí, kdy vyprší platnost úschovy u třetí osoby. Tuto hodnotu musíte nastavit vždy, když budou vstupenky do úschovy.
Za třetí, transakce vkládání lístků do úschovy musí
- zamkněte řádek události.
- přečtěte si sloupec dostupných vstupenek. (zrušit, pokud jich není dostatek)
- vložit řádek do tabulky úschovy u třetí osoby
- aktualizujte řádek události, abyste snížili počet dostupných vstupenek.
- odemkněte řádek události.
Za čtvrté, při dokončení prodeje je třeba odstranit řádek úschovy u třetí osoby a vložit řádek s prodaným lístkem. To není těžké.
Za páté, potřebujete operaci úschovy u třetí osoby. Je třeba vyhledat všechny řádky úschovy u třetí osoby, jejichž platnost vypršela (které mají datum vypršení platnosti v minulosti) a pro každý z nich:
- uzamkněte odpovídající řádek události.
- přečtěte si počet tiketů uložených v úschově z tabulky úschovy
- smažte řádek v tabulce úschovy u třetí osoby.
- aktualizujte řádek události, aby se zvýšil sloupec dostupných vstupenek.
- odemkněte řádek události.
Trik je mít počet dostupných vstupenky udržované způsobem, který je správně propojen, takže podmínky závodu mezi uživateli vaši událost nepřeprodávají.