[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