Si pone a questo punto un altro problema: come ottenere un numero univoco su un database multiutenza? La funzione SQL Max(nomecampo)+1 potrebbe essere un ottimo metodo, ma in caso di operazioni in contemporanea da parte di più utenti come evitare di ritrovarmi due record con lo stesso numero?
Mi spiego meglio. Siccome la sfiga non dorme mai, diciamo che su tre client viene eseguito in contemporanea, o quasi, un codice di questo tipo:
SELECT..... MAX(CampoUnivoco) AS x.... (per ottenere il numero più alto memorizzato per questo campo)
CampoUnivoco=x+1 (per creare il campo univoco, ovvero il nuumero più alto +1)
Creazione del nuovo record
Succede che per tutti e tre i client MAX(Campounivoco) porta lo stesso risultato in quanto l'operazione di scrittura non è ancora stata eseguita...e di conseguenza mi ritrovo con tre record con lo stesso valore associato a Campounivoco!
Capito? Cosa suggerite? Che ogni client blocchi l'accesso in scrittura su quella tabella fino a quando non è stato inserito il nuovo record? Altre opzioni più "flessibili" e meno drastiche non ne conoscete?