miércoles, 27 de junio de 2007

INSERT ... RETURNING y Conociendo el valor insertado en PostgreSQL

Algunas veces nos topamos con la necesidad de recuperar un cierto valor despues de una insercion en postgresql, como puede ser el valor asignado a un id de forma automatica mediante nextval o alguna valor seteado manualmente. A continuación muestro las diferentes formas para lograr esto sin un maximo de esfuerzo:

Supongamos que tenemos creadas la secuencia: clientes_id_seq y la usaremos dentro de una inserción.


INSERT INTO clientes (id, nombre, telefono)
VALUES (nextval('clientes_id_seq'), 'Juan Pérez','3455-6678');


Para conocer el id insertado podemos usar la funcion: currval() de la siguiente forma:


select currval('clientes_id_seq');


Otro metodo alternativo, y sobre todo cuando no manejamos secuencias es emplear INSERT RETURNING cuya sintaxis es la siguiente y que solo esta disponible en las versión 8.2 de PostgreSQL:

INSERT INTO clientes (id, nombre, telefono) values (5,'Juan Pérez','3455-6678') RETURNING id;

Tal vez aqui no se note la importancia del insert returning pero si el insert es dinamico mediante un script en algun lenguaje de programación la utilidad salta a simple vista.

No hay comentarios.:

Bahia desde el balcon...

Bahia desde el balcon...
Ixtapa Zihuatanejo