Skip site navigation (1) Skip section navigation (2)

Re: Ayuda con inquietud

From: Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
To: Javier Aquino <jaquino(at)lexuseditores(dot)com>
Cc: Jorge Toro <jolthgs(at)gmail(dot)com>, Ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Ayuda con inquietud
Date: 2012-07-10 03:06:01
Message-ID: 1341889260-sup-3619@alvh.no-ip.org (view raw or flat)
Thread:
Lists: pgsql-es-ayuda
Excerpts from Javier Aquino's message of lun jul 09 21:48:50 -0400 2012:
> OK, 
> 
> No había caído en cuenta de ello.
> 
> Entonces te quedaría 2 opciones:
> 
> 1. Crear un campo position_id en tu tabla "maestra" gps, este campo se
> actualizaría cada vez que realices un insert nuevo a tu tabla positions.
> 
> Pros: 
>  - Actualización muy rápida ya que solo actualizas un campo int.

Esto no es tal.  Al hacer un UPDATE en Postgres, tiene que crearse una
versión completa nueva del registro, que es idéntica al anterior y sólo
difiere en el campo int que cambiaste.  Así que no es para nada tan
rápido como sugieres.

> 2. crear una tabla nueva exactamente igual a positions llamado
> last_positions, pero con dos cambios ( id integer y no serial,  gps_id
> primary key) y este se actualizaría cada vez que ingrese un dato nuevo a
> tu tabla positions.

Esta idea es mucho mejor.

>    BEGIN
>      update last_positions
>         set (id, gps_id, position, velocidad, altura, fecha, grados,
>    satelites) =  ( new.id, gps_id, new.position, new.velocidad,
>    new.altura, new.fecha, new.grados, new.satelites)
>       where gps_id = new.gps_id;
>    if not found then
>      insert into last_positions
>      values ( new.* );
>    end if;

Buena suerte consiguiendo que esto funcione bien cuando haya dos
procesos insertando registros nuevos para un mismo gps_id.
Creo que es más sano tomar un SELECT FOR UPDATE.

-- 
Álvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>

In response to

Responses

pgsql-es-ayuda by date

Next:From: Miguel Beltran R.Date: 2012-07-10 13:41:16
Subject: Re: Comportamiento correcto del "not in" ?
Previous:From: Jaime CasanovaDate: 2012-07-10 02:59:53
Subject: Re: Fwd: instalacion

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group