[Db] stored function per generare stringa unica

Marcello Vezzelli marcello a vezz.it
Mer 22 Ago 2007 12:10:18 CEST


Domenico L. ha scritto:
>
> In alternativa dovresti usare una transazione....  a meno che non ti 
> funzioni
>
> insert into table (id,....) value (getID(),...)
>   

Da provare.

> In ogni caso sia con una procedura che con due istruzioni in 
> tranasazione ti serve un lock di tipo write, o un semaforo affinché la 
> procedura che genera l'identificativo non venga utilizzata 2 volte 
> contempoaranemante....
>   

Ma il lock non è garantito dalla transazione?

Poniamo che in due transazioni venga generato lo stesso id... succederà 
che la prima insert ha successo e la seconda fallisce...
non posso semplicemente ripetere la seconda insert?
Se il codice è tutto dentro a una sp, riprovo finché la insert non ha 
successo, generando un nuovo id ad ogni tentativo.
In pratica è come faccio adesso in php:

1) genero un id
2) SELECT per guardare se c'è già.. se c'è già torna a 1)
3) provo INSERT
4) se non ok torno a 1)
5) ho l'id del record inserito

C'è modo di farlo tutto dentro alla stored function in mysql 5?

Ciao
Marcello


Maggiori informazioni sulla lista Db