Re: Actualizacion en Cascada de llave primaria

From: Sebastián Villalba <sebastian(at)fcm(dot)unc(dot)edu(dot)ar>
To: Gunnar Wolf <gwolf(at)gwolf(dot)org>,Javier Chavez Barra <jchavezb(at)gmail(dot)com>
Cc: Martin Marques <martin(at)marquesminen(dot)com(dot)ar>, postgresayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Actualizacion en Cascada de llave primaria
Date: 2007-11-12 22:51:51
Message-ID: 20071112224327.M32210@fcm.unc.edu.ar
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Hola

On Mon, 12 Nov 2007 11:29:30 -0600, Gunnar Wolf wrote
> > > >diganme una cosa como se comportan esos campos en PG porque yo
> > > >por norma siempre prefiero calcular el valor del campo cuando es
> > > >una clave primaria porque me han pasado tallas en sqlserver al
> > > >menos que esos campos a veces se corrompen
> > >
> > > Nunca me paso. ¿Qué significa que se corrompe el campo? ¿En qué
> > > forma se corrompe?
> >
> > Es una larga historia!! pero por un motivo que no tengo la mas
> > remota idea me calculo mal unas PK y al tratar de hacer un insert me
> > reclamaba clave duplicada!!!.. :S fue por eso ... pero bueno puede
> > que PG no sea asi ... era solo simple curiosidad
>
> Como dices, quién sabe que haya pasado - pero si llegaste a esa
> situación (tal vez insertando IDs a mano sin haberle pedido a
> Postgres que lo haga a través de la secuencia [...]

Entiendo que la mala experiencia la había tenido con SQL Server, no con
PostgreSQL. De todas formas, antes de tirarle tierra a SQL Server (no es esa
mi intensión), sospecho que eso le ocurrió independientemente del motor de
base de datos que haya utilizado. Le sucedió porque en lugar de dejar que el
motor administre las llaves primarias, él calculaba el valor en su aplicación
e intentaba insertar el registro ya con el valor de su llave.

> > Si pero = no se quiza soy un poco mas fundamentalista ... en ese
> > sentido prefiero tener el control como programador .. y no darle esa
> > responsabilidad al motor.. [...]

A ésto me refería.

> Me suena a que aprendiste a usar BDs con algo tipo MySQL, ¿verdad? Es
> mucho más confiable dejar que la BD lo haga. Si no, puedes caer
> fácilmente en condiciones de carrera - Por ejemplo, si tu programa
> incluye un SELECT id FROM articulos ORDER BY id DESC LIMIT 1 para
> encontrar si el ID más alto empleado, el cual es incrementado en 1, y
> después viene un INSERT INTO articulos (id, otros_campos) VALUES
>
> (el_nuevo_id, los_otros_valores) - ¿Qué pasa si llegan dos
> solicitudes a la vez? Recuerda que la comunicación con Postgres es
> via sockets, pues es entre dos procesos de sistema diferentes, e
> implica un cambio de contexto para el sistema operativo. Puedes
> terminar con una excepción por PK duplicada - A menos que implmentes
> un sistema de locking, semáforos o lo que gustes. ¡Ah! Olvidaba
> decírtelo: La buena gente de Postgres se tomó la molestia de
> implementarlo por tí. Se llama "secuencias" ;-)

Si no fué eso mismo lo que le ocurrió con SQL Server, debe haber pegado en el
palo. ¿Para qué reinventar la rueda?. Sobre todo cuando la rueda ofrecida por
PostgreSQL, es una circunferencia perfecta!. Saludos... ;)

-
-------------------------------------------
Sebastián Villalba
sebastian(at)fcm(dot)unc(dot)edu(dot)ar
-------------------------------------------

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Javier Chavez 2007-11-12 23:10:42 Re: Actualizacion en Cascada de llave primaria
Previous Message Javier Chavez 2007-11-12 22:44:14 [OT] Clientes y Otras Yerbas