[Pgsql-ayuda] Como saco el valor de un serial despues de una =?ISO-8859-1?Q?inserci=F3n?= de manera eficiente

Felipe E. Barousse B. fbarousse@piensa.com
01 Mar 2002 15:02:25 -0600


Hola Fernando:

Es muy f=E1cil:

Suponiendo que tengas la tabla:

id_dato   integer   not null default nextval('tabla_id_dato_seq'::text)
datos     text

(El serial es el id_dato y por supuesto tiene su indice
"tabla_id_dato_pkey")

La secuencia de "seriales" se guarda en tabla_id_dato_seq y puedes
obtener el valor que se acaba de generar despues de un insert con:

select last_value from tabla_id_datos_seq;

La otra forma de usarlo es usando la funcion de Postgres "currval()"
JUSTO DESPUES del INSERT, (ejemplo tomado del manual):

 INSERT INTO person (name) VALUES ('Blaise Pascal');
    new_id =3D output of "SELECT currval('person_id_seq')";



Dato adicional: si modificas la secuencia (un DROP SEQUENCE y luego
CREATE SECUENCE...) puedes lograr alterar los "seriales".

Espero se entienda con mi ejemplo de "table" y "id_dato"

Un saludo

Felipe Barousse
Bufete Consultor de Mexico - Piensa Technologies.
www.piensa.com


On Fri, 2002-03-01 at 02:27, Fernando Romo wrote:
> Estimados:
>=20
> Necesito insertar un registro en una tabla que tiene un tipo de campo
> serial y sacar inmediatamente el valor del registro que se acaba de
> actualizar.
>=20
> Por ejemplo en MS SQL uno usa una variable llamada @@IDENTITY que trae
> el valor de este campo despues de un INSERT.
>=20
> En pgsql hay algo similar?
>=20
> Saludos... El Pop
>=20
>=20
>=20
> _______________________________________________
> Pgsql-ayuda mailing list
> Pgsql-ayuda@tlali.iztacala.unam.mx
> http://tlali.iztacala.unam.mx/mailman/listinfo/pgsql-ayuda