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

Como saber cual fue la clave generada automaticamente

Estas en el tema de Como saber cual fue la clave generada automaticamente en el foro de Mysql en Foros del Web. Buen dia tengo una duda, Tengo una tabla de maestro donde capturo su nombre, apellido paterno y apellido materno y este tiene su campo Id ...
  #1 (permalink)  
Antiguo 01/05/2012, 18:55
 
Fecha de Ingreso: abril-2008
Mensajes: 316
Antigüedad: 16 años, 7 meses
Puntos: 3
Como saber cual fue la clave generada automaticamente

Buen dia tengo una duda, Tengo una tabla de maestro donde capturo su nombre, apellido paterno y apellido materno y este tiene su campo Id autoincremental, pero necesito relacionarlo en otras tablas por medio de su id, desde mi aplicacion no especifico el id asi se crea automaticamente, pero para relacionarlo no se cual fue el id con el que este maestro fue creado, entonces hay alguna manera de saber cual fue el id con el que se guardo, ??

Estube investigando y parece que con la funcion LAST_INSERT_ID() puedo obtener el ultimo id del maestro insertado, entonces pienso, despues de insertar al maestro ejecuto la funcion desde mi aplicacion y ese es el id del maestro, pero y si suponiendo la aplicacion es usada desde varias maquinas y yo inserto un maestro y luego mi compañero otro, entonces no me devolveria el id del maestro insertado por mi compañero?? se que la velocidad a la que se realizaria las consultas son muy rapidas y hay un margen muy pequeño de que pase pero podria pasar??
  #2 (permalink)  
Antiguo 02/05/2012, 02:37
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: Como saber cual fue la clave generada automaticamente

Si estas usando tablas InnoDB, puedes usar el control de transacciones para controlar esto

13.4.1. Sintaxis de START TRANSACTION, COMMIT y ROLLBACK

http://dev.mysql.com/doc/refman/5.0/...last-insert-id
Cita:
The ID that was generated is maintained in the server on a per-connection basis. This means that the value returned by the function to a given client is the first AUTO_INCREMENT value generated for most recent statement affecting an AUTO_INCREMENT column by that client. This value cannot be affected by other clients, even if they generate AUTO_INCREMENT values of their own. This behavior ensures that each client can retrieve its own ID without concern for the activity of other clients, and without the need for locks or transactions.
http://mysql.conclase.net/curso/?sqlfun=LAST_INSERT_ID
Cita:
El último ID que fue generado se mantiene en el servidor en una base por conexión. Esto significa que el valor que devuelve la función para un cliente dado es valor AUTO_INCREMENT más reciente generado por ese cliente. El valor no puede verse afectado por otros clientes, aunque generen valores AUTO_INCREMENT por si mismos. Este comportamiento asegura que se puede recuperar un ID sin preocuparse por la actividad de otros clientes, y sin necesidad de bloqueos o transacciones. El valor de LAST_INSERT_ID() no cambia si se actualiza una columna AUTO_INCREMENT de una fila con un valor no mágico (es decir, un valor que no es NULL ni 0). Si se insertan muchas filas al mismo tiempo con una sentencia , LAST_INSERT_ID() devuelve el valor para la primera fila insertada. El motivo para esto es hacer posible reproducir más fácilmente la misma sentencia de nuevo en algún otro servidor. Si se da un argumento expr a LAST_INSERT_ID(), el valor del argumento será devuelto por la función, y se asigna como siguiente valor a retornar por LAST_INSERT_ID(). Esto se puede usar para simular secuencias...
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 02/05/2012 a las 04:27

Etiquetas: automaticamente, clave, fue, tabla, campos
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 16:04.