[Db] contatore server side
Marcello Vezzelli
marcello a vezz.it
Mer 3 Gen 2007 15:01:35 CET
Domenico L. wrote:
> uhm.... credo tu abbia capito ma hai scritto il contrario....
ehm si non mi sono spiegato molto bene...
> Da questa osservazione possiamo iniziare a delineare un soluzione:
>
> tabella Sequenza (id autorincremet ciclico) unica per tutto il db
>
> Before INSERT:
> insert into Sequenza return_isertd_id into id;
> set new:numfat=id;
>
>
> insert
>
>
> After Insert:
> delete from Sequenza where id=new.numfat;
> begin
> select id+1 into xId
> from fat_seq
> where anno=new.anno for update; #se esiste
> update fat_seq
> set id = xId
> where anno=new.anno;
> exception
> when no_data_found then
> insert into fat_Seq values(new.anno, 1);
> xId = 1;
> when others then raise;
> end;
>
> update fattura
> set numfat=xId
> where anno=new.anno and numfat=new.numfatt
> and ....
> ;
>
> Più o meno il codice purtroppo non sono sicuro sia corretto, però la
> logica dovrebbe esserci :-)
Ho capito la logica, però ci dev'essere un altro modo più pulito di fare
questa cosa.
Mi sembra strano che per fare una cosa relativamente semplice sia
necessario ricorrere a una tabella di supporto con un campo
autoincrementante.
Stavo leggendo questo...
http://www.onlamp.com/pub/a/onlamp/2005/02/03/triggers.html
Se anziché SET @x = @x + 1 questo valore di x me lo ricavo dalla tabella
con una select, non ho costruito un autoincrementante fatto col trigger?
Ciao
Marcello
Maggiori informazioni sulla lista
Db