Re: Valor de la lleve primaria se almacene en las tablas relacionales

From: Alvaro Herrera <alvherre(at)commandprompt(dot)com>
To: Henry <hensa22(at)yahoo(dot)es>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Valor de la lleve primaria se almacene en las tablas relacionales
Date: 2007-01-22 14:07:58
Message-ID: 20070122140758.GG26006@alvh.no-ip.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Henry escribió:
> CREATE TABLE a (
> id serial primary key,
> desc texte
> );
> CREATE TABLE b (
> id_a int4 REFERENCES a DEFAULT currval('a_id_seq'),
> cant int4
> );
>
> insert into a(desc) values('descripcion');insert into a(desc) values('descripcion2');
> insert into b(cant) values (10);
>
> tengo duda sobre esta solucion, como la tabla b hace referencia al valor actual de la secuencia a_id_seq, entonces si estamos trabajando con un solo usuario esta solucion seria excelente, pero que sucederia si estamos trabajando con varios usuarios que tienen que hacer inserciones en esas tablas, que pasa si justo al mismo momento o casi al instante ( sin todavia haber insertado detalles) dos o mas usuarios insertan en la misma tabla a, entonces la secuencia que estaba en 1 ahora va a estar en 2 o 3, y bueno
> al final las 2 primeras cabezeras se van a quedar sin detalle, y la ultima tomara los detalles de las 2 primeras, por tener el valor por defecto el valor actual de la secuencia.

No es así. Las secuencias funcionan correctamente en este caso,
entregando currval() en cada sesión el último valor que la secuencia
generó _en tu sesión_.

De hecho las secuencias se inventaron precisamente para solucionar este
problema, y lo hacen.

> Digo esto , porke tuve un problema parecido, asi que para insertar en
> las tablas tuve que hacerlo todo en una sola transaccion y
> bloqueandolas para ke otro no pueda insertar hasta que termine.

"Parecido" como? Me imagino que no estabas usando secuencias.

--
Alvaro Herrera http://www.CommandPrompt.com/
PostgreSQL Replication, Consulting, Custom Development, 24x7 support

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Rodrigo Gil Giuliano 2007-01-22 14:08:49 Re: interface para bbdd postgresql
Previous Message Alvaro Herrera 2007-01-22 14:02:04 Re: Conexión de los clientes con la base de datos postgresql