Mostrando entradas con la etiqueta SQL. Mostrar todas las entradas
Mostrando entradas con la etiqueta SQL. Mostrar todas las entradas

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.