Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

recuperar valor de clave primaria

Estas en el tema de recuperar valor de clave primaria en el foro de Mysql en Foros del Web. Buenas. No tengo mucha idea de mysql...He creado una tabla con una clave primaria que se autoincrementa cada vez que inserto una fila. Cuando inserto ...
  #1 (permalink)  
Antiguo 09/11/2006, 02:25
 
Fecha de Ingreso: agosto-2006
Mensajes: 57
Antigüedad: 17 años, 8 meses
Puntos: 0
recuperar valor de clave primaria

Buenas. No tengo mucha idea de mysql...He creado una tabla con una clave primaria que se autoincrementa cada vez que inserto una fila. Cuando inserto una nueva fila en la tabla, me gustaría saber que id le ha asignado. HAy alguna manera de saber que valor le ha asignado...pueden ayudarme?gracias
  #2 (permalink)  
Antiguo 09/11/2006, 04:59
Avatar de Korku  
Fecha de Ingreso: noviembre-2003
Ubicación: En un lugar oscuro...
Mensajes: 688
Antigüedad: 20 años, 5 meses
Puntos: 5
Hola,

Bueno te voy a dar una idea... Cuando insertas un registro y quieres saber cual es el último ID, haces una consulta SELECT MAX(id) FROM tabla

Saludos
__________________
Carpe diem quam minimum credula postero.


http://www.programador-freelance.es
  #3 (permalink)  
Antiguo 09/11/2006, 06:14
 
Fecha de Ingreso: abril-2005
Mensajes: 17
Antigüedad: 19 años
Puntos: 0
Espero que te sirva..

Código:
<?
    $db= mysql_connect("localhost","root","",MYSQL_CLIENT_INTERACTIVE);
    mysql_select_db('test');
    
    
    $iSQL  = "INSERT INTO autoincremental_test (description) VALUES('probando...')";    
    mysql_query($iSQL,$db);    
    
    /*inmediatamente después del insert realizamos la consulta
       que nos devuelve el último ID insertado
     */
    $qSQL = "SELECT @@IDENTITY id"; 
    $res = mysql_query($qSQL,$db);
    $row = mysql_fetch_array($res);
    echo $row['id'];    
?>
  #4 (permalink)  
Antiguo 09/11/2006, 07:43
Avatar de Lord of freaks  
Fecha de Ingreso: octubre-2004
Ubicación: Madrid
Mensajes: 334
Antigüedad: 19 años, 6 meses
Puntos: 2
Hola

Con respecto a la respuesta de Korku hay un problema y es que si consultas el valor máximo justo después de hacer tu INSERT, es posible que en ese periodo de tiempo alguien haga otro INSERT y entonces el MAX no sea el de tu INSERT sino el del otro.

Cita:
Iniciado por Korku Ver Mensaje
Hola,

Bueno te voy a dar una idea... Cuando insertas un registro y quieres saber cual es el último ID, haces una consulta SELECT MAX(id) FROM tabla

Saludos
Yo te recomiendo mejor usar LAST_INSERT_ID.

Un saludo
__________________
Una vez un elemental de rayos mató una tribu entera de tritones.

¡¡ El sólo quería darse un baño !!

http://www.frikilandia.com

Neither Fu Nor Fa
  #5 (permalink)  
Antiguo 09/11/2006, 09:09
Avatar de Korku  
Fecha de Ingreso: noviembre-2003
Ubicación: En un lugar oscuro...
Mensajes: 688
Antigüedad: 20 años, 5 meses
Puntos: 5
Bueno, tienes razón... pero entonces hay otra solución... poniendo un campo auxiliar de tipo alfanumérico, se genera una variable aleatoria y lo guarda al insertar un registro y luego se hace una consulta select con la condición de esa variable generada...

Un saludo :)
__________________
Carpe diem quam minimum credula postero.


http://www.programador-freelance.es

Última edición por Korku; 09/11/2006 a las 15:09
  #6 (permalink)  
Antiguo 09/11/2006, 14:24
 
Fecha de Ingreso: abril-2005
Mensajes: 17
Antigüedad: 19 años
Puntos: 0
Si, hay muchas formas de hacerlo, pero teniendo a disposición consultas que retornan el último id insertado (ya sea LAST_INSERT_ID ó SELECT @@IDENTITY, que son iguales), es bueno usarlas.

Igualmente depende del gusto del desarrollador y los métodos de Korku son totalmente válidos.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:31.