Anda sangat dekat dengan desain Anda, tetapi tidak cukup sampai di sana.
Pertama-tama, meja acara Anda harus menyimpan jumlah tiket yang masih tersedia untuk acara Anda (selain apa pun yang Anda inginkan di sana).
Kedua, tabel escrow Anda harus memiliki kolom DATETIME yang menunjukkan kapan escrow kedaluwarsa. Anda perlu menyetel nilai itu setiap kali tiket masuk ke escrow.
Ketiga, transaksi menempatkan tiket di escrow perlu
- mengunci baris acara.
- baca kolom tiket yang tersedia. (batalkan jika tidak cukup tersedia)
- menyisipkan baris di tabel escrow
- perbarui baris acara untuk mengurangi kolom tiket yang tersedia.
- membuka kunci baris acara.
Keempat, tindakan menyelesaikan penjualan perlu menghapus baris escrow dan memasukkan baris tiket terjual. Ini tidak sulit.
Kelima, Anda memerlukan operasi pembersihan escrow. Ini perlu mencari semua baris escrow yang telah kedaluwarsa (yang memiliki tanggal kedaluwarsa di masa lalu) dan, untuk setiap baris:
- mengunci baris acara yang sesuai.
- membaca jumlah tiket escrow dari tabel escrow
- menghapus baris tabel escrow.
- perbarui baris acara untuk menambah kolom tiket yang tersedia.
- membuka kunci baris acara.
Triknya adalah memiliki jumlah tersedia tiket dipelihara dengan cara yang saling bertautan dengan benar, sehingga kondisi balapan di antara pengguna tidak membuat acara Anda laris.