[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