From: | Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org> |
---|---|
To: | Javier Chavez Barra <jchavezb(at)gmail(dot)com> |
Cc: | Raúl Andrés Duque <ra_duque(at)yahoo(dot)com(dot)mx>, MIGUEL CANCHAS <mcanchas(at)tsr(dot)com(dot)pe>, pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: tomando el maximo valor |
Date: | 2007-11-24 00:28:46 |
Message-ID: | 20071124002846.GA3442@alvh.no-ip.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
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.
--
Alvaro Herrera http://www.amazon.com/gp/registry/CTMLCN8V17R4
"[PostgreSQL] is a great group; in my opinion it is THE best open source
development communities in existence anywhere." (Lamar Owen)
From | Date | Subject | |
---|---|---|---|
Next Message | Alvaro Herrera | 2007-11-24 01:36:51 | Re: envio de email |
Previous Message | Javier Chavez Barra | 2007-11-24 00:15:19 | Re: tomando el maximo valor |