ciao, vi spiego il mio problema:
ho una tabella con un campo posti disponibili (ex pd=3) e una tabella prenotazioni.
ogni record della tabella prenotazioni conta per 1.
il numero di prenotazioni (count(prenotazioni)) deve essere minore o uguale al numero di posti disponibili.
quando devo inserire una prenotazione prima controllo la disponibilità:
mettiamo che la count restituisca 1.codice:SELECT (pd-COUNT(prenotazioni)) AS disponibili FROM tab_posti INNER JOIN tab_prenotazioni ON ... WHERE ... GROUP BY ... ... if Cint(rs("disponibili"))>0 then INSERT INTO tab_prenotazioni (...) VALUES (...) else Response.Write("Posti disponibili terminati") end if
Anche se il caso è mooolto raro, potrebbe accadere che in caso di contemporaneità di accesso magari due utenti ottengono 1 come risultato della count e per entrambi venga effettuata la insert. ovviamente questa è un eventualità che devo evitare.
avete qualche suggerimento su come procedere? io pensavo di aprire la connessione al db in maniera esclusiva, ma non mi convince molto come soluzione. voi che mi dite?

Rispondi quotando
