Re: tomando el maximo valor

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)

In response to

Responses

Browse pgsql-es-ayuda by date

  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