[Db] contatore server side
Marcello Vezzelli
marcello a vezz.it
Mer 3 Gen 2007 12:19:47 CET
Domenico L. wrote:
> Allora le stored procedure sono molto utili ma secondo me non fanno
> propriamente al caso tuo... (se non devi richiamare una procedura
> passando ogni campo della tabella), meglio invece un trigger after
> insert.
After insert dici... quindi devo usare come chiave primaria qualcos'altro.
>
> 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...
> Un trigger afeter insert non ha il problema di accedere alla tabella
> che stai modificando, ma cmq è abbastanza pesante fare una select max....
> meglio usare una tabella di appoggio con più record (tanto hai anche
> l'anno) il trigger non farà altro che leggere il valore corrente,
> aggiungerci uno, salvare (se il record non c'è fa una insert, si
> dovrebbe poter fare tutto con un'operazione), e quindi finalmente
> modificare il codice con il progressivo corretto.
Quindi suggerisci una modifica "a posteriori".
>
> Se poi puoi permetterti di avere qualche buco, puoi usare un triggere
> before insert così non hai il problema del codice dummy
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à?
Ciao
Marcello
Maggiori informazioni sulla lista
Db