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

Insertar campo que va en consecutivo y traer el Nº correcto

Estas en el tema de Insertar campo que va en consecutivo y traer el Nº correcto en el foro de Bases de Datos General en Foros del Web. No se si pregunto bien pero lo que necesito es lo siguiente, tengo un formulario donde un usuario X agregar unos datos ejemplo: -ID -Nombre ...
  #1 (permalink)  
Antiguo 08/02/2011, 17:17
 
Fecha de Ingreso: diciembre-2010
Mensajes: 13
Antigüedad: 13 años, 11 meses
Puntos: 0
Insertar campo que va en consecutivo y traer el Nº correcto

No se si pregunto bien pero lo que necesito es lo siguiente, tengo un formulario donde un usuario X agregar unos datos ejemplo:

-ID
-Nombre
-Apellido
-Identificacion
-Fecha de Nacimiento
-Genero
-Plan de Salud

y el campo id es consecutivo osea un autoincrementable, entonces necesito que al usuario darle guardar nombres me almacene los datos, ( hasta ahy lo se hacer), pero luego necesito que en la siguiente pantalla despues de guardar los nombres me traiga todos los campos junto con el ID osea consecutivo que le toco, si me hago entender ? como puedo insertar esos campos y asi mismo hacer la consulta de los mismos y que le traiga el ID, porque pueden estar varios usuarios insertando datos a la vez pero el ID no se puede repetir y se generara uno distinto cada vez que inserten datos, porfavor una ayudita, pocas veces pregunto pero la verdad no encontre, saludos desde Colombia.
  #2 (permalink)  
Antiguo 09/02/2011, 02:22
Avatar de Heimish2000  
Fecha de Ingreso: enero-2011
Ubicación: Madrid
Mensajes: 844
Antigüedad: 13 años, 9 meses
Puntos: 89
Respuesta: Insertar campo que va en consecutivo y traer el Nº correcto

Te propongo tres soluciones:

1) Hacer una select por el resto de los campos y coger el último registro. Problema, que haya dos usuarios con exactamente los mismos datos, pero por eso digo coger el último

2) Justo antes de insertar hacer una select para ver el último ID y luego hacer una select del siguiente valor (es el que te insertara). Problema, que hagan una inserción justo entre que recoges el ID y realizas tu inserción (aunque es bastante improbable)

3) Hacer la select sobre el máximo ID. Problema, si han insertado algo detrás.
  #3 (permalink)  
Antiguo 09/02/2011, 10:12
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Insertar campo que va en consecutivo y traer el Nº correcto

Crea tu campo llave como auntoincrementable asi no tendras problemas si varios usuarios acceden a la vez a la base ya que este campo se incrementa automatico :)

Saludos!
  #4 (permalink)  
Antiguo 09/02/2011, 10:46
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Insertar campo que va en consecutivo y traer el Nº correcto

El problema de concurrencia de usuarios en tareas de inserción/borrado de datos en un DBMS no se resuelve por uso de autoincrementales o de consultas. Se resuelve usando transacciones, y eventualmente en algunos casos (Oracle, por ejemplo) usando secuencias, con las que se puede hacer una reserva del siguiente ID, por ejemplo.

En el caso del uso de transacciones (la mejor forma), la concurrencia se resuelve prácticamente sola, porque es imposible que dos registros se inserten al mismo tiempo. El valor del ID de esa tabla surge solamente cuando se ha producido la inserción exitosa, por lo que en el caso de ser autoincrementales, cada inserción devolverá, sin importar quién la hace, un resultado diferente.

Usar solamente campos autoincrementales no asegura absolutamente nada en la concurrencia si la consulta del valor máximo de ese ID no se realiza con bloqueo de escritura. Si no se bloquea la tabla, y se va a manejar el ID programáticamente, puede darse el caso de que dos usuarios consulten al mismo tiempo el valor y por ende intenten adicionar el mismo valor de ID futuro...

La solución, por donde lo mires, son las transacciones.

Nota:
En el caso específico de MySQL el uso de transacciones requiere que las tablas sí o sí sean InnoDB y no MyISAM.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 12/02/2011, 02:03
 
Fecha de Ingreso: febrero-2011
Ubicación: Capital federal
Mensajes: 16
Antigüedad: 13 años, 9 meses
Puntos: 1
Respuesta: Insertar campo que va en consecutivo y traer el Nº correcto

creo q no entendi la discusion.

si quieres saber el id del campo insertado puedes usar mysql_insert_id();

eso, no te sirve?

Salu2

Etiquetas: consultar, insertar
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 15:31.