13 de enero de 2008

MySql: Como obtener el último id creado

Supongamos que tenemos una tabla con un campo "id" de tipo entero con autoincremento (el típico id).

Supongamos también que cada vez que hagamos un "INSERT" necesitamos saber a continuación el "id".

¿Cómo conseguirlo?

Pues muy fácil, con la instrucción mysql_insert_id()

A ver si así se me queda en la cabeza y no se me olvida :D

4 comentarios:

El Seguidor Del Metodo dijo...

Hola Gabriel!

Avisa cuando nazca tu hija. Por si acaso, te felicito de antemano.

Un saludo desde BCN.

Gabriel Cuesta dijo...

Colgaré un buen post. A ver si me puedo hacer una foto graciosa con ella :)

David dijo...

¡Hola mozo!

Cuidadín con mysql_insert_id() ya que te devuelve el id del último insert realizado, que no es necesariamente el insert que te interesa.

Imagina un sistema concurrente con varios hilos de ejecución en el que tu das de alta una noticia desde tu browser a la vez que yo doy de alta otra noticia desde mi browser. Es raro pero puede suceder que ambos inserts se realicen simultáneamente (uno detrás del otro) y que tanto a ti como a mi la función nos devuelva el id del insert que entrase el último.

Estoy deseando ver ya ese "buen post" ;)

Abrazos.

Gabriel Cuesta dijo...

Tienes razón, hay una manera de evitarlo que es utilizar el "lock", pero claro, eso es armamento atómico :).

Tengo que pensar una manera de evitar ese problema ya que cuando el insert se hace desde la parte pública de una web muy visitada si que puede producir problemas.

Lo verás, aunque en tu caso espero que te llegue primero el sms :P