[Db] contatore server side

Marcello Vezzelli marcello a vezz.it
Mer 3 Gen 2007 11:46:08 CET


Domenico L. wrote:
>
> Se il problema è che i numeri devono essere consecutivi l'approccio è 
> un po' più complesso... occorre effettuare un'insert con un codice 
> fittizio, se va tutto a buon fine si può finalmente mettere il codice 
> corretto...

>
> Gestire questa cosa tramite trigger o precedure è possibile ma occorre 
> ragionarci bene...

Con Interbase/Firebird la logica era questa:
apro la transazione e appendo un record alla tabella senza salvarlo.
Faccio inserire i dati e in generale aspetto che l'utente decida di 
confermare il salvataggio... non so il numero di fattura.
Quando l'utente conferma la scrittura, appena prima di POSTare il 
record, chiamo una stored procedure che mi incrementa un trigger server 
side di uno e me lo ritorna.
Assegno il valore al campo numfatt, poi faccio la POST.
In caso di POST concomitanti su sessioni diverse, è garantita l'unicità 
del trigger e quindi del campo numfatt. Poco importa se l'append della 
fattura 234 è precedente a quello della fattura 233, l'importante è che 
siano distinte. E cmq la chiave primaria mi garantisce l'ordinamento.

Tu mi dici in pratica di "simulare" lo stesso comportamento con una 
tabella di appoggio..
Pero' dovrei avere una tabella per anno, perché può succedere di 
inserire fatture nel 2006 e nel 2007 contemporaneamente.
Ogni tabella dovrebbe avere un autoincrementante indipendente.

Che brutto però...

Siccome uso Mysql 5 ho le stored procedure, ma non le ho mai usate su 
mysql... qualcuno con esperienza in merito?
Giusto per evitare di imbroccare una strada senza uscita.

Ciao
Marcello






Maggiori informazioni sulla lista Db