Foros del Web » Programando para Internet » PHP »

Hay manera de saber que id sera generado en mysql

Estas en el tema de Hay manera de saber que id sera generado en mysql en el foro de PHP en Foros del Web. Hola amigos habra una manera de saber que id sera generado en un campo aunto incremento antes de hacer un inserta en una tabla gracias ...
  #1 (permalink)  
Antiguo 09/08/2005, 11:45
Avatar de chalchis  
Fecha de Ingreso: julio-2003
Mensajes: 1.773
Antigüedad: 21 años, 4 meses
Puntos: 21
Pregunta Hay manera de saber que id sera generado en mysql

Hola amigos habra una manera de saber que id sera generado en un campo aunto incremento antes de hacer un inserta en una tabla

gracias espero sus comentarios
saludos
__________________
gerardo
  #2 (permalink)  
Antiguo 09/08/2005, 12:23
Avatar de yoseman  
Fecha de Ingreso: diciembre-2003
Ubicación: Alicante (Spain)
Mensajes: 471
Antigüedad: 20 años, 11 meses
Puntos: 5
Creo que esto te serviría:

Código PHP:
$tabla="tu_tabla";
$a=mysql_query("SHOW TABLE STATUS LIKE '".$tabla."';");
$assoc=mysql_fetch_assoc($a);
$auto_increment=$assoc['Auto_increment'];
print 
$auto_increment
En esta dirección te explica algunas cosillas más:
http://dev.mysql.com/doc/mysql/en/sh...le-status.html

Salu2 ;)
__________________
[+]
[+]
  #3 (permalink)  
Antiguo 09/08/2005, 12:23
 
Fecha de Ingreso: septiembre-2003
Ubicación: Sentado frente a un computador
Mensajes: 191
Antigüedad: 21 años, 2 meses
Puntos: 0
claro, selecionando el ultimo campo id de tu tabla creada y sumale uno, asi tu sabras cual sera el proximo campo generado

acuerdate que el autoincremental, solo es un numero mas que el anterior, no encuentro cual es tu problematica
  #4 (permalink)  
Antiguo 09/08/2005, 12:47
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 21 años, 1 mes
Puntos: 11
Hay que recordar que esto es multiusuario, si consultas por el ultimo id en un determinado momento no quiere decir que un segundo despues aun sea el ultimo, yo prefiero preguntar apenas he guardado cual fue el id generado, con la funcion: msyql_insert_id();

http://www.php.net/manual/es/functio...-insert-id.php
  #5 (permalink)  
Antiguo 09/08/2005, 12:51
Avatar de yoseman  
Fecha de Ingreso: diciembre-2003
Ubicación: Alicante (Spain)
Mensajes: 471
Antigüedad: 20 años, 11 meses
Puntos: 5
Cita:
Iniciado por dark_goldviper
claro, selecionando el ultimo campo id de tu tabla creada y sumale uno, asi tu sabras cual sera el proximo campo generado

acuerdate que el autoincremental, solo es un numero mas que el anterior, no encuentro cual es tu problematica
Bueno si por ejemplo tienes la siguiente tabla, a la que añadiste estos elementos al principio, sin borrar ninguno:

Código:
id        animal
-------------
1         perro
2         gato
3         oso
4         ratón
5         tigre
6         toro
El auto-increment estaría a 7, cómo es lógico.
Pero si borras por ejemplo la última fila e intentas obtener el auto_increment usando tu método, te devolvería 7, mientras que tu tabla se quedó en:
Código:
id        animal
-------------
1         perro
2         gato
3         oso
4         ratón
5         tigre
Salu2 ;)
__________________
[+]
[+]
  #6 (permalink)  
Antiguo 09/08/2005, 13:10
Avatar de chalchis  
Fecha de Ingreso: julio-2003
Mensajes: 1.773
Antigüedad: 21 años, 4 meses
Puntos: 21
Gracias yoseman

Antes que nada gracias a todos por responder
y yoseman que buen script publicaste no tenia idea
de algo asi, mi proceso era crea un registro que guardara
en la tabla en otro campo el id que se generara

hice este proceso
primero inserto luego usando mysql_insert_id
hago un update donde namas actualizo el campo donde quiero
la copia del id

$sql ="INSERT INTO $WEB_IN (WEB_IN_TEX,WEB_IN_URL,WEB_IN_ST,WEB_IN_TARGET) VALUES
('$contenido','$url','$_POST[txau]','$_POST[txcarga]')";
$result= mysql_query($sql);

if($result)
{
$mi_id=mysql_insert_id($conexion);
$actualiza = "UPDATE $WEB_IN SET WEB_ID_ORDEN='$mi_id' WHERE WEB_IN_ID='$mi_id' ";
$result= mysql_query($actualiza);

if(!$result)
{
$error="v";
$mensaje="error: al tratar de actualizar la información.";
echo mysql_error();
}


}
else
{
$error="v";
$mensaje="error: al tratar de almacenar la información.";
echo mysql_error();
}
mysql_close($conexion);
__________________
gerardo
  #7 (permalink)  
Antiguo 09/08/2005, 13:20
Avatar de yoseman  
Fecha de Ingreso: diciembre-2003
Ubicación: Alicante (Spain)
Mensajes: 471
Antigüedad: 20 años, 11 meses
Puntos: 5
Sí se trata por ejemplo de consultas secuenciales en las que se ha de insertar en múltiples campos de distintas tablas el identificador de una consulta, esa es desde luego la mejor opción.

Precisamente cómo dice claudiovega, porque no es fiable, ya que en tiempo de paralelas ejecuciones puede variar el auto_increment debido por ejemplo a otra inserción en otro script.

Pero claro preguntaste 'que id será generado'

Salu2 ;)
__________________
[+]
[+]
  #8 (permalink)  
Antiguo 09/08/2005, 13:30
Avatar de chalchis  
Fecha de Ingreso: julio-2003
Mensajes: 1.773
Antigüedad: 21 años, 4 meses
Puntos: 21
Sonrisa Ok

Creo yo, en caso de que hubiera paralelismo en ejecutar el script se podria bloquear la tabla no crees?

no se que opinen?
__________________
gerardo
  #9 (permalink)  
Antiguo 09/08/2005, 13:31
Avatar de chalchis  
Fecha de Ingreso: julio-2003
Mensajes: 1.773
Antigüedad: 21 años, 4 meses
Puntos: 21
Pero ya bueno ya seria otro tema

Pero ya bueno ya seria otro tema que discutir

gracias pos sus contestaciones amigos
saludos
__________________
gerardo
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 21:14.