Último id insertado en base de datos con Golang

En este post vamos a ver cómo obtener el último id insertado en la base de datos usando Go también conocido como Golang.

No importa la base de datos que usemos, siempre y cuando usemos database/sql. Con esto podemos conectar a MySQL, PostgreSQL, SQLite3, etcétera.

Veamos entonces cómo obtener el id del último elemento insertado o el id del elemento del último insert.

Last insert id con Golang y SQL

Al momento de ejecutar una consulta obtenemos un Result. Por ejemplo cuando invocamos a baseDeDatos.Exec el método nos devuelve un resultado y un error.

Podemos obtener el id de la última inserción invocando a resultado.LastInsertId.

Ejemplo de código

Aquí tenemos un ejemplo con SQLite3. Obviamente tú puedes cambiar el motor, el nombre y todo eso. Esto solo es un ejemplo.

El código de ejemplo queda así:

// https://parzibyte.me/blog

bd, err:= sql.Open("sqlite3", "mibd.bd") // Puede ser cualquier motor
if err != nil {
  panic(err)// Manejar error como tú prefieras
}

defer bd.Close()
// Puede ser cualquier consulta
resultado, err := bd.Exec(`INSERT INTO personas(nombre)
VALUES
(?)`, "Luis")
if err != nil {
  panic(err)// Manejar error como tú prefieras
}
ultimoId,err := resultado.LastInsertId()
if err != nil{
  panic(err)// Manejar error como tú prefieras
}
// Aquí ya tenemos a ultimoId, haz lo que quieras con él

En la línea 3 abrimos la base de datos, luego aplazamos el cierre de la misma con defer en Go. Ejecutamos una consulta simple en la línea 10 y obtenemos el último id en la línea 16.

Ya solo para mostrarte otro ejemplo, te muestro el código que estoy usando en una función de un sistema que ando programando:

func registrarNuevoPlatillo(platillo Platillo) (int64, error) {
	bd, err := obtenerBD()
	if err != nil {
		return 0, err
	}

	defer bd.Close()
	resultado, err := bd.Exec(`INSERT INTO platillos(nombre, descripcion, precio, foto)
	VALUES
	(?, ?, ?, ?)`, platillo.Nombre, platillo.Descripcion, platillo.Precio, platillo.Foto)
	if err != nil {
		return 0, err
	}
	return resultado.LastInsertId()
}

Te dejo más tutoriales de Go por aquí.

Estoy aquí para ayudarte 🤝💻


Estoy aquí para ayudarte en todo lo que necesites. Si requieres alguna modificación en lo presentado en este post, deseas asistencia con tu tarea, proyecto o precisas desarrollar un software a medida, no dudes en contactarme. Estoy comprometido a brindarte el apoyo necesario para que logres tus objetivos. Mi correo es parzibyte(arroba)gmail.com, estoy como@parzibyte en Telegram o en mi página de contacto

No te pierdas ninguno de mis posts 🚀🔔

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *