[Db] contatore server side
Domenico L.
domenico.lorusso a pleiade.it
Mer 3 Gen 2007 11:32:05 CET
Marcello Vezzelli ha scritto:
> Davide Michel 'ZioBudda' Morelli wrote:
>> Marcello Vezzelli ha scritto:
>>>
>>> mi trovo ad affrontare il "classico" problema della numerazione
>>> fatture per anno.
>>> Ho due bei campi int, numfatt e anno, che formano la chiave primaria.
>
>> devi settare il campo "int" come intero con opzione auto_increment.
>> In questo modo per ogni inserimento si occupa mysql di mettere il
>> numero giusto dentro a "int" (quindi la concorrenza).
>> Per ritornarnare questo valore subito dopo il nuovo inserimento devi
>> utilizzare |mysql_insert_id()|
>
> Ma va bene un autoincrementante in questo caso, visto che il numero di
> fattura deve ricominciare da 1 ogni anno?
uhm... uhm....
una stored procedure può essere...
in Oracle ti parlerei di sequence e di job schedulati... in mysql ti
tico come emulare il concetto:
ti crei una tabella chiamata fat_seq:
con un unico attributo numerico
quando devi fare un nuovo inserimento devi iniziare una transazione
fare
update fat_seq set id=id+1;
[peccato che non c'è la clausola returning]
estrai il nuovo id
fai l'insert chiudi la transazione
Dovresti riuscire a gestire schedulando in qualche modo che a inizio
anno venga riazzerata la tabella.
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...
--
Domenico L. icq: 645 44 861
per stupire mezz'ora basta un libro di storia,
io cercai di imparare la Treccani a memoria... [F.d.A.]
Maggiori informazioni sulla lista
Db