Alvaro Herrera escribió:
> Javier Chavez Barra escribió:
>
>> Raúl Andrés Duque escribió:
>>
>
>
>>>> Entiendo que quiere guardar un campo id calculado... pero creo que es
>>>> mejor :
>>>> 1.- Calcularlo en el insert
>>>> 2.- controlar el NULL
>>>>
>>>> Select Coalesce(max(foo),0)+1 as foo
>>>> from foo
>>>> Where ....
>>>>
>>>> Es eso lo que quieres hacer o no???
>>>>
>>> Pero esto sólo sirve en ambiente monousuario ... en sistemas con
>>> concurrencia te vuelves loco.
>>>
>
>
>> Eso lo controla el motor no??
>>
>
> Para nada. No solo esta tecnica es horrible de lenta, sino que ademas
> esta sujeta a condiciones de carrera como dice Raúl.
>
> Las secuencias (campos autoincrementales) se inventaron _precisamente_
> para evitarse este problema.
>
>
>> se entiende que se ejecuta cuando haces la sentencia de insert ...
>>
>
> No es asi, porque las transacciones se pueden ejecutar concurrentemente
> y por un tema de aislacion la tupla que una vaya a estar insertando no
> sera visible para la otra.
>
>
>> en todo caso es la respuesta a lo que preguntaron a lo que apuntaba era ke
>> tenias que controlar el null por otro lado me ha quedado mas que claro que
>> en PG puedes usar a voluntad campos autoincrementables :0)
>>
>
> Lo de los NULL es un pelo de la cola.
>
>
Insisto yo respondi a lo que me preguntaron jejeje :o) bueno gracias de
todas formas... en todo caso ya aprendi la leccion en los correos
anteriores señores profesores .. usare en PG campos autoincrementables!!!
Slds.
J.