viernes, 28 de octubre de 2011

Obtener ID luego de insertar un registro en SQL

Supongamos que tenemos la siguiente tabla en nuestra base de datos:

tabla
idEntero autoincrementable
campo1varchar(10)
campo2varchar(30)
campo3varchar(30)


El problema ocurre cuando hacemos una inserción en la base de datos y necesitamos saber cual fue el id con el que quedó nuestro registro.

La solución a este problema llega a nosotros gracias a la clausula RETURNING. Miremos como sería nuestra consulta:

INSERT INTO tabla (campo1, campo2, campo3) VALUES ('c1', 'c2', 'c3') RETURNING id;

La anterior consulta inserta el registro en la tabla tabla y retorna el id con el que queda este. Ahora si nuestra intensión es guardar este valor en una variable dentro de una función SQL podemos hacerlo así:


CREATE FUNCTION funcion (VARCHAR, VARCHAR, VARCHAR) RETURN INTEGER
AS$$
DECLARE
id_t INTEGER;
BEGIN
INSERT INTO tabla (campo1, campo2, campo3) VALUES ($1, $2, $3)
RETURNING id INTO id_t;
RETURN id_t;
END;
$$LANGUAGE plpgsql;

Función hecha en PostgreSQL


La clausula "RETURINIG id INTO id_t" podemos usarlo independiente del gestor de bases de datos que estemos usando.

No hay comentarios:

Publicar un comentario