Documentos de Académico
Documentos de Profesional
Documentos de Cultura
@@identity
Este es posiblemente el metodo mas conocido, consiste en utilizar la sintaxis SELECT @@identity AS id este metodo funciona tanto en MySQL como en SQL SERVER y devuelve el id del ultimo ingreso por lo que se lo utiliza a continuacion de la sentencia INSERT. $rs = mysql_query("SELECT @@identity AS id"); if ($row = mysql_fetch_row($rs)) { $id = trim($row[0]); }
MAX(id)
Otra forma de obtener el ultimo id es mediante la sentencia SELECT MAX(id) AS id FROM tabla, recordando que solo funciona en campos con la propiedad auto-increment. La ventaja de este metodo con respecto al anterior es que puede ser utilizado incluso si se han realizado otras inserciones a otras tablas, si se ha reiniciado el computador, etc; ya que este metodo busca el id de mayor valor dentro de la tabla y como es auto incrementable el mayor siempre sera el ultimo. Es muy util si vas a recuperar el ultimo id en cualquier momento y no solo despues de insertarlo. $rs = mysql_query("SELECT MAX(id_tabla) AS id FROM tabla"); if ($row = mysql_fetch_row($rs)) { $id = trim($row[0]); }
mysql_insert_id
Por ultimo, si estas trabajando en php y mysql es posible que conozcas esta funcion mysql_insert_id(). Al igual que la propiedad @@identity, solo retorna el id del ultimo registro ingresado independientemente de la tabla en la que se haya realizado la operacion. Tambien es posible utilizarla en SQL SERVER a traves de la funcion mssql_insert_id(). $id=mysql_insert_id(); por el momento he confirmado que las tres opciones funcionan perfectamente con mysql y php, y referencias de que funcionan igualmente en SQL SERVER. Como bono para la gente que desarrolla en SQL SERVER les enlazo a este sitio
donde tenemos una pequena muestra de como utilizar la funcion Scope_identity() que trabaja de forma similar a los metodos vistos arriba.