Re: Serial / Secuencia

From: "Guillermo =?iso-8859-1?b?TXXxb3o=?=" <guillermo(dot)munoz(at)grupotekne(dot)com(dot)ar>
To: "Juan =?iso-8859-1?b?TWFydO1uZXo=?=" <jeugenio(at)umcervantes(dot)cl>
Cc: MIGUEL CANCHAS <mcanchas(at)tsr(dot)com(dot)pe>, 'Alvaro Herrera' <alvherre(at)commandprompt(dot)com>, pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Serial / Secuencia
Date: 2007-10-25 14:02:23
Message-ID: 20071025110223.wa9rfspfrk844g04@webmail.vit4b.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Quoting Juan Martínez <jeugenio(at)umcervantes(dot)cl>:

> MIGUEL CANCHAS escribió:
> > Alvaro Herrera escribio:
>>> MIGUEL CANCHAS escribió:
>>>>
>>>> Entonces tengo que crear UNA SECUENCIA DISTINTA por cada tabla que deseo
>>>> que use un valor secuencial ???
>>>
>>> No necesariamente, pero eso es lo que generalmente se hace.
> >
>> No necesariamente ? entonces de que otra manera se puede lograr lo mismo ?
>> si bien en mis tablas necesito un numero para poder realizar las relaciones
>> con otras tablas .
>
> A ver...
>
> => create table a (a1 serial);
> NOTICE: CREATE TABLE creara una secuencia implicita 'a_a1_seq' para
> la columna serial 'a.a1'
> CREATE TABLE
>
> => \d a
> Tabla «pg_temp_1.a»
> Columna | Tipo | Modificadores
> ---------+---------+------------------------------------------------
> a1 | integer | not null default nextval('a_a1_seq'::regclass)
>
> Entonces la secuencia se llama 'a_a1_seq'. Luego creamos otra tabla
> que use la misma secuencia:
>
> => create table b (b1 integer not null default nextval('a_a1_seq'));
> CREATE TABLE
>
> y listo!

mmmm, me parece que esta no es la solucion buscada.
esta bien que la secuencia este en la primer tabla, pero no en la segunda. por
que al hacer el insert en la segunda tabla van a quedar con diferente ID y lo
que esta buscando es poder crear una relacion (FK) Cabecera - Detalle (Por lo
que entendi del primer mail)
deberia ser (Juan:te tomo el ejemplo)

Tabla A
Columna | Tipo | Modificadores
--------+---------+------------------------------------------------
a1 | integer | not null default nextval('a_a1_seq'::regclass)

Tabla B
Columna | Tipo | Modificadores
--------+---------+------------------------------------------------
b1 | integer | not null

inmediatamente de insertado el dato en la tabla A, haces select
currval('a_a1_seq');

y este valor lo insertas en la tabla B. o lo devolves para ser usado en otra
parte y no perderlo.

por eso te pedia que postearas la funcion, para ver que estas haciendo.
Lo estas programando con algun lenguaje o desde funciones de postgres?

Saludos
Guillermo Muñoz

>
> --
> Juan Martinez G. Mac Iver # 370
> Departamento de Informatica 4997900 - 4997934
> Universidad Miguel de Cervantes Santiago - Chile
> http://download.bblug.usla.org.ar/netiquette.png
> --
> TIP 3: Si encontraste la respuesta a tu problema, publícala, otros te
> lo agradecerán
>

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alejandro Larrama 2007-10-25 14:22:54 initdb no inicia la base de datos
Previous Message Alvaro Herrera 2007-10-25 13:53:54 Re: initdb no inicia la base de datos