[Db] contatore server side

Domenico L. domenico.lorusso a pleiade.it
Mer 3 Gen 2007 12:25:27 CET


Marcello Vezzelli ha scritto:
>> Insisto sull'after perché se hai bisogno di non avere buchi di 
>> numerazione, puoi mettere il numero solo dopo che il record è stato 
>> inserito (metti che ti sei dimenticato un controllo o che ti salta un 
>> constraint).
>
> Beh in tal caso al trigger before post non ci arriva... o si?
> Cioè mi vuoi dire che i constraint vengono valutati dopo l'esecuzione 
> del trigger? Paura...
naturalmente sì se è un trigger before
>
> Ovviamente buchi non ce ne devono essere. Diciamo si gestisce lato 
> applicazione: le fatture non si possono cancellare (ma solo 
> modificare, il numero di fattura rimane comunque assegnato), a meno 
> che non si voglia cancellare l'ultima inserita... in tal caso è 
> possibile farlo.
> Qui bisogna capire cosa succede se "contemporaneamente" cancello 
> l'ultima e ne inserisco una nuova... non è che una transazione vede 
> ancora la fattura mentre l'altra l'ha già cancellata? Come si 
> gestiscono queste situazioni imbarazzanti?
> Ma fare una lock table in questi casi serve a qualcosa o è una 
> bestialità?
No mysql 5 ha il lock a livello di riga quindi tutto bene.

Mi lascia un po' da pensare il concetto che è possibile cancellare 
l'ultima, in un ambiente concorrente il concetto di ultima è una cosa 
che non ci si può permettere di avere.

Anche perché potrebbe diventare l'ultima di un utente... ma qui stiamo 
di fatto introducendo una soluzione (peraltro già vista in software di 
fatturazione) che le fatture vengono inserite e successivamente (dopo x 
giorni o manualemente) convalidate, quindi gli si assegna il numero.

Ora se loro vogliono questo, ferma tutto, perché l'approccio è ben 
diverso, altrimenti dopo proseguo ;-)

-- 
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