Re: Serial / Secuencia

Lists: pgsql-es-ayuda
From: guillermo(dot)munoz(at)grupotekne(dot)com(dot)ar
To: MIGUEL CANCHAS <mcanchas(at)tsr(dot)com(dot)pe>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Serial / Secuencia
Date: 2007-10-23 14:57:13
Message-ID: 20071023115713.snf49q2qgc0kw44w@webmail.vit4b.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

Quoting MIGUEL CANCHAS <mcanchas(at)tsr(dot)com(dot)pe>:

> Amigos hace un tiempo atras consulte sobre contadores en las tablas para
> poder realizar codigos unicos(Primary Key) y enlazarlos en Cabecera -
> Detalle, bien empece a usar campos SERIAL, cuando grabo genera
> automaticamente el codigo o correlativo, hasta alli todo bien, lo que
> necesito es como devolver el codigo que generó cuando se realizó la
> grabación.
>
> Estaba viendo como hacerlos con (esto es otro modo)
>
> CREATE SEQUENCE "public"."serial"
> INCREMENT 1 MINVALUE 0
> MAXVALUE 9223372036854775807 START 1
> CACHE 1;
>
> entonces desde mi sistema haria algo como :
>
> SELECT nextval('serial');
>
> y obtendria el codigo siguiente y tomando este valor lo insertaria en mis
> tablas.
>
> Que les parece ? estará bien ? cual de las 2 me recomiendan ?
>

te recomiendo que cuando crees la tabla establescas el valor por defecto del
campo id la secuencia (serial)
CREATE TABLE femeba_dba.test
(
id_test integer NOT NULL DEFAULT nextval('test_seq'::regclass),
...
CONSTRAINT pkprocesos PRIMARY KEY (id_proceso)
);
entoces cuando insertes en la tabla ya te hace el nextval y ya te deja obtener
el currval.
despues para recuperar el valor insertado es con la sentecia:
select currval('test_seq');

tene en cuenta que si no haces un nextval, por lo menos dentro de una misma
transaccion, el currval te da error

Saludos, espero te sirva
Guillermo Muñoz

>
> Gacias
>
> Miguel Canchas
>


From: MIGUEL CANCHAS <mcanchas(at)tsr(dot)com(dot)pe>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Serial / Secuencia
Date: 2007-10-23 15:36:21
Message-ID: 410117BB01F4D611B73A00010331DD2403B58223@tsnt.tsr.com.pe
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

Amigos hace un tiempo atras consulte sobre contadores en las tablas para
poder realizar codigos unicos(Primary Key) y enlazarlos en Cabecera -
Detalle, bien empece a usar campos SERIAL, cuando grabo genera
automaticamente el codigo o correlativo, hasta alli todo bien, lo que
necesito es como devolver el codigo que generó cuando se realizó la
grabación.

Estaba viendo como hacerlos con (esto es otro modo)

CREATE SEQUENCE "public"."serial"
INCREMENT 1 MINVALUE 0
MAXVALUE 9223372036854775807 START 1
CACHE 1;

entonces desde mi sistema haria algo como :

SELECT nextval('serial');

y obtendria el codigo siguiente y tomando este valor lo insertaria en mis
tablas.

Que les parece ? estará bien ? cual de las 2 me recomiendan ?


Gacias

Miguel Canchas


From: Alvaro Herrera <alvherre(at)commandprompt(dot)com>
To: MIGUEL CANCHAS <mcanchas(at)tsr(dot)com(dot)pe>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Serial / Secuencia
Date: 2007-10-23 16:04:57
Message-ID: 20071023160457.GH18013@alvh.no-ip.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

MIGUEL CANCHAS escribió:
> Amigos hace un tiempo atras consulte sobre contadores en las tablas para
> poder realizar codigos unicos(Primary Key) y enlazarlos en Cabecera -
> Detalle, bien empece a usar campos SERIAL, cuando grabo genera
> automaticamente el codigo o correlativo, hasta alli todo bien, lo que
> necesito es como devolver el codigo que generó cuando se realizó la
> grabación.

SELECT currval('serial');
(o era "curval"?)

--
Alvaro Herrera http://www.PlanetPostgreSQL.org/
"The eagle never lost so much time, as
when he submitted to learn of the crow." (William Blake)


From: Espartano <espartano(dot)mail(at)gmail(dot)com>
To: "Alvaro Herrera" <alvherre(at)commandprompt(dot)com>
Cc: "MIGUEL CANCHAS" <mcanchas(at)tsr(dot)com(dot)pe>, pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Serial / Secuencia
Date: 2007-10-23 16:10:33
Message-ID: d353bd50710230910l3b925d31q1a5cc94572d853fe@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

El 23/10/07, Alvaro Herrera <alvherre(at)commandprompt(dot)com> escribió:
> MIGUEL CANCHAS escribió:
> > Amigos hace un tiempo atras consulte sobre contadores en las tablas para
> > poder realizar codigos unicos(Primary Key) y enlazarlos en Cabecera -
> > Detalle, bien empece a usar campos SERIAL, cuando grabo genera
> > automaticamente el codigo o correlativo, hasta alli todo bien, lo que
> > necesito es como devolver el codigo que generó cuando se realizó la
> > grabación.
>
> SELECT currval('serial');
> (o era "curval"?)

currval me parece, curval creo que es una funcion trigonometrica.

>
> --
> Alvaro Herrera http://www.PlanetPostgreSQL.org/
> "The eagle never lost so much time, as
> when he submitted to learn of the crow." (William Blake)
> --
> TIP 8: explain analyze es tu amigo
>

--
"Linux is for people who hate Windows, BSD is for people who love UNIX".
"Social Engineer -> Because there is no patch for human stupidity"
"The Unix Guru's View of Sex unzip ; strip ; touch ; grep ; finger ;
mount ; fsck ; more ; yes ; umount ; sleep."
"Documentation is like sex: when it is good, it is very, very good;
and when it is bad, it is better than nothing."


From: "Omar Antonio Neyra Rodriguez" <omarneyrarodriguez(at)gmail(dot)com>
To: "guillermo(dot)munoz(at)grupotekne(dot)com(dot)ar" <guillermo(dot)munoz(at)grupotekne(dot)com(dot)ar>
Cc: "MIGUEL CANCHAS" <mcanchas(at)tsr(dot)com(dot)pe>, pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Serial / Secuencia
Date: 2007-10-23 22:06:26
Message-ID: 21b99cb00710231506q17b5d9d4ic15849de5d057ac4@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

y que pasaria y antes de utilizar el currval alguien ha insertado otro
registro???
¿Recuperaria el registro erroneo?
--
OMAR NEYRA RODRÍGUEZ
Desarrollo y Soporte

CENTRO DE INFORMÁTICA Y COMPUTACIÓN
(Informatics and Computing Center)

UNIVERSIDAD DE LA SERENA

Tel/Phone (56 51) 282971
Celular: (56 9) 88770234
email: omneyra(at)userena(dot)cl
www.userena.cl


From: Alvaro Herrera <alvherre(at)commandprompt(dot)com>
To: Omar Antonio Neyra Rodriguez <omarneyrarodriguez(at)gmail(dot)com>
Cc: "guillermo(dot)munoz(at)grupotekne(dot)com(dot)ar" <guillermo(dot)munoz(at)grupotekne(dot)com(dot)ar>, MIGUEL CANCHAS <mcanchas(at)tsr(dot)com(dot)pe>, pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Serial / Secuencia
Date: 2007-10-23 22:21:08
Message-ID: 20071023222108.GY18013@alvh.no-ip.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

Omar Antonio Neyra Rodriguez escribió:
> y que pasaria y antes de utilizar el currval alguien ha insertado otro
> registro???
> ¿Recuperaria el registro erroneo?

Solamente te entrega el valor que tu sesion asigna. Si en otra sesion
alguien hace un nextval(), eso no te afecta.

--
Alvaro Herrera Valdivia, Chile ICBM: S 39º 49' 18.1", W 73º 13' 56.4"
"If it wasn't for my companion, I believe I'd be having
the time of my life" (John Dunbar)


From: "Guillermo =?iso-8859-1?b?TXXxb3o=?=" <guillermo(dot)munoz(at)grupotekne(dot)com(dot)ar>
To: Alvaro Herrera <alvherre(at)commandprompt(dot)com>
Cc: Omar Antonio Neyra Rodriguez <omarneyrarodriguez(at)gmail(dot)com>, MIGUEL CANCHAS <mcanchas(at)tsr(dot)com(dot)pe>, pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Serial / Secuencia
Date: 2007-10-24 16:01:46
Message-ID: 20071024130146.0cfb0y55c8sck0s8@webmail.vit4b.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

Quoting Alvaro Herrera <alvherre(at)commandprompt(dot)com>:

> Omar Antonio Neyra Rodriguez escribió:
>> y que pasaria y antes de utilizar el currval alguien ha insertado otro
>> registro???
>> ¿Recuperaria el registro erroneo?
>
> Solamente te entrega el valor que tu sesion asigna. Si en otra sesion
> alguien hace un nextval(), eso no te afecta.

Es asi, el nextval y currval se manejan dentro de una transaccion. Si
vos haces
un nextval y al mismo tiempo otro usuario hace un nextval a cada uno le va a
asignar valores diferente y por ende currval les retornara valores diferente
sin a cada uno hasta que termine la transaccion o haya otro nextval dentro de
la transaccion. por eso no podes hacer un currval sin antes hacer un nextval

Saludos
Guillermo Muñoz

>
> --
> Alvaro Herrera Valdivia, Chile ICBM: S 39º 49' 18.1", W 73º 13' 56.4"
> "If it wasn't for my companion, I believe I'd be having
> the time of my life" (John Dunbar)
> --
> TIP 2: puedes desuscribirte de todas las listas simultáneamente
> (envía "unregister TuDirecciónDeCorreo" a majordomo(at)postgresql(dot)org)
>


From: Miguel Rodríguez Penabad <penabad(at)gmail(dot)com>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Serial / Secuencia
Date: 2007-10-24 17:39:51
Message-ID: 95335e4e0710241039j7b8e2491y19969ade79f78b7f@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

> Es asi, el nextval y currval se manejan dentro de una transaccion. Si

Afinando: no es a nivel de transacción sino de sesión. Y un "nextval"
no se deshace al hacer rollback:

penabad=> begin;
BEGIN
penabad=> select nextval('seq1');
nextval
---------
5

penabad=> select nextval('seq1');
nextval
---------
6

penabad=> rollback;
ROLLBACK
penabad=> select currval('seq1');
currval
---------
6

--
Miguel Rodríguez Penabad


From: "Dayron Fernandez Macias" <dfmacias(at)estudiantes(dot)uci(dot)cu>
To: Guillermo Muñoz <guillermo(dot)munoz(at)grupotekne(dot)com(dot)ar>, "Alvaro Herrera" <alvherre(at)commandprompt(dot)com>
Cc: "Omar Antonio Neyra Rodriguez" <omarneyrarodriguez(at)gmail(dot)com>, "MIGUEL CANCHAS" <mcanchas(at)tsr(dot)com(dot)pe>, <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: RE: Serial / Secuencia
Date: 2007-10-25 03:02:35
Message-ID: 0470B17A392EDA499A0F26DE9971ECD402CD30DB@ucixs12.uci.cu
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

Hola con respecto a ese tema mi preguna es

Que hice una secuencia para que me incrementara el identificador de una de mis tablas automaticamente ,esta secuencia la paso a traves del nextval , pero el problema no esta ahi , sino cuando creo una funcion de insertar que me retorne la secuencia para saber por que id me quede insertando ...entonce me da error y no asi con la version 8.0 ....me pueden ayudar en esta nueva version 8.1

________________________________

De: pgsql-es-ayuda-owner(at)postgresql(dot)org en nombre de Guillermo Muñoz
Enviado el: mié 24/10/2007 12:01
Para: Alvaro Herrera
CC: Omar Antonio Neyra Rodriguez; MIGUEL CANCHAS; pgsql-es-ayuda(at)postgresql(dot)org
Asunto: Re: [pgsql-es-ayuda] Serial / Secuencia

Quoting Alvaro Herrera <alvherre(at)commandprompt(dot)com>:

> Omar Antonio Neyra Rodriguez escribió:
>> y que pasaria y antes de utilizar el currval alguien ha insertado otro
>> registro???
>> ¿Recuperaria el registro erroneo?
>
> Solamente te entrega el valor que tu sesion asigna. Si en otra sesion
> alguien hace un nextval(), eso no te afecta.

Es asi, el nextval y currval se manejan dentro de una transaccion. Si
vos haces
un nextval y al mismo tiempo otro usuario hace un nextval a cada uno le va a
asignar valores diferente y por ende currval les retornara valores diferente
sin a cada uno hasta que termine la transaccion o haya otro nextval dentro de
la transaccion. por eso no podes hacer un currval sin antes hacer un nextval

Saludos
Guillermo Muñoz

>
> --
> Alvaro Herrera Valdivia, Chile ICBM: S 39º 49' 18.1", W 73º 13' 56.4"
> "If it wasn't for my companion, I believe I'd be having
> the time of my life" (John Dunbar)
> --
> TIP 2: puedes desuscribirte de todas las listas simultáneamente
> (envía "unregister TuDirecciónDeCorreo" a majordomo(at)postgresql(dot)org)
>

--
TIP 9: visita nuestro canal de IRC #postgresql-es en irc.freenode.net


From: "Jaime Casanova" <systemguards(at)gmail(dot)com>
To: "Dayron Fernandez Macias" <dfmacias(at)estudiantes(dot)uci(dot)cu>
Cc: Guillermo Muñoz <guillermo(dot)munoz(at)grupotekne(dot)com(dot)ar>, "Alvaro Herrera" <alvherre(at)commandprompt(dot)com>, "Omar Antonio Neyra Rodriguez" <omarneyrarodriguez(at)gmail(dot)com>, "MIGUEL CANCHAS" <mcanchas(at)tsr(dot)com(dot)pe>, pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Serial / Secuencia
Date: 2007-10-25 04:25:13
Message-ID: c2d9e70e0710242125r2e4ffe3ft3bd50da824b6cce3@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

On 10/24/07, Dayron Fernandez Macias <dfmacias(at)estudiantes(dot)uci(dot)cu> wrote:
> Hola con respecto a ese tema mi preguna es
>
> Que hice una secuencia para que me incrementara el identificador de una de mis tablas automaticamente ,esta secuencia la paso a traves del nextval , pero el problema no esta ahi , sino cuando creo una funcion de insertar que me retorne la secuencia para saber por que id me quede insertando ...entonce me da error y no asi con la version 8.0 ....me pueden ayudar en esta nueva version 8.1
>

currval() solo puede ser ejecutado despues que se haya ejecutado
nextval() en esa misma sesion... y asi a sido siempre... si dices que
en 8.0 no ocurria asi es un bug de postgresql (pero estoy seguro que
te equivocas, desde que tengo memoria eso a funcionado)

--
Atentamente,
Jaime Casanova

"Programming today is a race between software engineers striving to
build bigger and better idiot-proof programs and the universe trying
to produce bigger and better idiots.
So far, the universe is winning."
Richard Cook


From: "Guillermo =?iso-8859-1?b?TXXxb3o=?=" <guillermo(dot)munoz(at)grupotekne(dot)com(dot)ar>
To: Jaime Casanova <systemguards(at)gmail(dot)com>
Cc: Dayron Fernandez Macias <dfmacias(at)estudiantes(dot)uci(dot)cu>, Alvaro Herrera <alvherre(at)commandprompt(dot)com>, Omar Antonio Neyra Rodriguez <omarneyrarodriguez(at)gmail(dot)com>, MIGUEL CANCHAS <mcanchas(at)tsr(dot)com(dot)pe>, pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Serial / Secuencia
Date: 2007-10-25 11:49:44
Message-ID: 20071025084944.gf82iv4ygcw4g4ko@webmail.vit4b.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

Quoting Jaime Casanova <systemguards(at)gmail(dot)com>:

> On 10/24/07, Dayron Fernandez Macias <dfmacias(at)estudiantes(dot)uci(dot)cu> wrote:
>> Hola con respecto a ese tema mi preguna es
>>
>> Que hice una secuencia para que me incrementara el identificador de
>> una de mis tablas automaticamente ,esta secuencia la paso a traves
>> del nextval , pero el problema no esta ahi , sino cuando creo una
>> funcion de insertar que me retorne la secuencia para saber por que
>> id me quede insertando ...entonce me da error y no asi con la
>> version 8.0 ....me pueden ayudar en esta nueva version 8.1
>>
>
> currval() solo puede ser ejecutado despues que se haya ejecutado
> nextval() en esa misma sesion... y asi a sido siempre... si dices que
> en 8.0 no ocurria asi es un bug de postgresql (pero estoy seguro que
> te equivocas, desde que tengo memoria eso a funcionado)
>

podes publicar la funcion de insercion?

Saludos
Guillermo Muñoz

> --
> Atentamente,
> Jaime Casanova
>
> "Programming today is a race between software engineers striving to
> build bigger and better idiot-proof programs and the universe trying
> to produce bigger and better idiots.
> So far, the universe is winning."
> Richard Cook
> --
> TIP 1: para suscribirte y desuscribirte, visita
> http://archives.postgresql.org/pgsql-es-ayuda
>