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

Obtener el valor de AUTOINCREMENTO luego de un INSERT

Estas en el tema de Obtener el valor de AUTOINCREMENTO luego de un INSERT en el foro de Bases de Datos General en Foros del Web. Tengo una duda. Tengo una tabla con un campo de autoincremeto, hago un INSERT.. existe alguna forma de que el INSERT devuelva el valor que ...
  #1 (permalink)  
Antiguo 16/09/2005, 01:20
 
Fecha de Ingreso: diciembre-2001
Ubicación: Morelia, México.
Mensajes: 312
Antigüedad: 22 años, 4 meses
Puntos: 0
Pregunta Obtener el valor de AUTOINCREMENTO luego de un INSERT

Tengo una duda.

Tengo una tabla con un campo de autoincremeto, hago un INSERT.. existe alguna forma de que el INSERT devuelva el valor que se le dió a ese campo de autoincremento? o se debe usar un SELECT después?

Ahora.. yo voy a aplicar esto en visual basic existe dos formas a mi parecer:

conn.execute "INSERT........; SELECT........" o

conn.execute "INSERT........"
conn.execute "SELECT........"

Estoy segurísimo de que la primera obliga al servidor a ejecutar el SELECT inmediatamente después del INSERT y por tanto obtendría el valor correcto, mientras que en la segunda podría suceder que se produzca otro INSERT de otro usuario y al momento de dar SELECT vea el autoincremento del otro usuario y no el del campo mío.. estoy en lo correcto?

Que opciones hay para esto? Gracias! :)
  #2 (permalink)  
Antiguo 16/09/2005, 11:20
Avatar de Mickel  
Fecha de Ingreso: mayo-2002
Ubicación: Lima, Peru
Mensajes: 4.619
Antigüedad: 22 años
Puntos: 7
haz un storedprocedure que haga el insert y luego devuelva el select max
__________________
No tengo firma ahora... :(
  #3 (permalink)  
Antiguo 16/09/2005, 13:00
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 4 meses
Puntos: 98
Puedes preguntar por el campo IDENTITY inmediatamente despues de la incersion

INSERT INTO tabla(campos) VALUES(valores); SELECT @@IDENTITY AS ultimo_id

La solucion de Mikel tambien es muy efectiva ya que el stored procedure ejecutara el bloque de codigo, y siempre te devolvera el ID para esa incersion, no asi si lo manejas externamente, pues pudiera suceder que la sentencia MAX te trajera un ID insertado posteriormente que el tuyo.

Salu2,
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #4 (permalink)  
Antiguo 16/09/2005, 13:44
 
Fecha de Ingreso: septiembre-2004
Ubicación: Argentina
Mensajes: 49
Antigüedad: 19 años, 7 meses
Puntos: 0
si lo trabajas desde php, hay una función que te devuelve el id insertado de la sentencia SQL, que es mysql_insert_id()
__________________
"Sólo sé que no sé nada..." - Sócrates - (un adelantado...!)
  #5 (permalink)  
Antiguo 18/09/2005, 13:45
 
Fecha de Ingreso: enero-2004
Mensajes: 310
Antigüedad: 20 años, 3 meses
Puntos: 0
Si es sql como ya te han dicho usa el SELECT @@IDENTITY
__________________
Un saludo,
Trucos
Videos
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:15.