Re: Serial / Secuencia

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
Thread:
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
>

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message fulanito detal 2007-10-23 15:05:34 Marcas de agua en tablas???
Previous Message Martin Marques 2007-10-23 12:36:40 Conexion a servidor Postgresql 8.1 y 8.2