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

Insertar un registro o actualizarlo, si es que éste registro ya existe

Estas en el tema de Insertar un registro o actualizarlo, si es que éste registro ya existe en el foro de Mysql en Foros del Web. Hola estimados, Me gustaria saber cual es la forma correcta de insertar un registro en una tabla o actualizarlo, si es que éste registro ya ...
  #1 (permalink)  
Antiguo 11/11/2011, 16:50
 
Fecha de Ingreso: octubre-2011
Ubicación: Buenos Aires
Mensajes: 84
Antigüedad: 12 años, 6 meses
Puntos: 2
Pregunta Insertar un registro o actualizarlo, si es que éste registro ya existe

Hola estimados,

Me gustaria saber cual es la forma correcta de insertar un registro en una tabla o actualizarlo, si es que éste registro ya existe.

Esta es un ejemplo de mi tabla:


Tabla1
===================
legajo------examen----nota
===================
100---------a-----------7
100---------b-----------4
200---------a-----------7
300---------a-----------6
300---------c-----------7
  • Si al legajo 100 le ingreso la nota 8 para el examen a quiero que me haga un update.
  • Si al legajo 100 le ingreso la nota 8 para el examen c quiero que me haga un insert.

Muchas gracias!
  #2 (permalink)  
Antiguo 11/11/2011, 17:45
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Insertar un registro o actualizarlo, si es que éste registro ya existe

Cita:
Si al legajo 100 le ingreso la nota 8 para el examen a quiero que me haga un update.
Si al legajo 100 le ingreso la nota 8 para el examen c quiero que me haga un insert.
Estas son cosas que se resuelven en la programación de la aplicación. No hay modo de hacerlo con consultas, al menos no en MySQL...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 11/11/2011, 18:28
 
Fecha de Ingreso: octubre-2011
Ubicación: Buenos Aires
Mensajes: 84
Antigüedad: 12 años, 6 meses
Puntos: 2
Pregunta Respuesta: Insertar un registro o actualizarlo, si es que éste registro ya existe

Yo habia pensado en esta sentencia:

Código:
IF EXISTS
(SELECT legajo,pelicula FROM tabla1 WHERE legajo='100' AND examen='a')
INSERT INTO tabla1 (legajo,examen,nota) VALUES ('100','a','8')
ELSE
UPDATE tabla1 SET nota='8' WHERE legajo='100' AND examen='a';
'100', 'a' y '8' son imputs que vienen de la pagina

El problema que vi aca, que puede darse el caso de que justo luego de ejecutar el IF EXISTS, otro "usuario" inserte en la tabla un registro con los mismos datos generando datos duplicados...

Ademas no se si es la forma mas correcta o hay otra que demande menos recursos??
  #4 (permalink)  
Antiguo 11/11/2011, 19:01
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Insertar un registro o actualizarlo, si es que éste registro ya existe

Como te dije, no se puede hacer en MySQL porque no existen las sentencias condicionales. Además esa forma de IF sólo se puede utilizar en procedimientos almacenados, donde en definitivas terminas haciendo lo mismo que podrías hacer mejor en la aplicación con un lenguaje de programación.
Por otro lado, el problema de la concurrencia de usuarios se resuelve con transacciones.

Yo insisto que es mucho mejor idea resolver tu problema a nivel aplicación, y de ese modo seleccionar la operación correspondiente.
__________________
¿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 11/11/2011, 19:04
 
Fecha de Ingreso: octubre-2011
Ubicación: Buenos Aires
Mensajes: 84
Antigüedad: 12 años, 6 meses
Puntos: 2
Respuesta: Insertar un registro o actualizarlo, si es que éste registro ya existe

No entiendo a que te referis con resolver el problema a nivel aplicación, seleccionando la operación correspondiente...Me podes dar un ejemplo?

Gracias!!
  #6 (permalink)  
Antiguo 11/11/2011, 19:47
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Insertar un registro o actualizarlo, si es que éste registro ya existe

¡Mon Dieu!

Tu estás haciendo el ingreso de datos en un formulario, ¿no es así? Bueno, si eso es lo que estás haciendo, entonces estás creando una aplicación (denominación genérica para programa), y por tanto es en esa etapa, en la programación, donde haces que se tome la decisión de qué sentencia enviarás al MySQL.
Esto puede ser realizado en PHP, VB, VB.Net, Java, Ajax, Python, etc. Tu dirás qué estás usando.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: registro, tabla
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:12.