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

[SOLUCIONADO] Duda con Update

Estas en el tema de Duda con Update en el foro de Mysql en Foros del Web. Que tal amigos de este foro, les comento mi duda.. cuento con una tabla llamada dosis_aplicadas, con los siguientes campos: id_generales----- llave primaria curp---------------- llave ...
  #1 (permalink)  
Antiguo 28/05/2013, 14:16
Avatar de bare87  
Fecha de Ingreso: mayo-2008
Mensajes: 42
Antigüedad: 15 años, 11 meses
Puntos: 0
Pregunta Duda con Update

Que tal amigos de este foro, les comento mi duda..

cuento con una tabla llamada dosis_aplicadas, con los siguientes campos:

id_generales----- llave primaria
curp---------------- llave primaria
id_vacuna--------- llave primaria
dosis--------------- llave primaria
fecha_aplic
lote
clues

lo que necesito hacer, es actualizar el campo id_vacuna segun los datos de fecha_aplic e id_vacuna...es decir...modificar el campo id_vacuna a "19" de todos aquellos registros que tengan una fecha mayor o igual que "2011-04-01"...(esto en fecha_aplic) y que en id_vacuna tengan un "8"...no se si me di a entender, pero creo que al ver la consulta me entenderan...

Código MySQL:
Ver original
  1. UPDATE dosis_aplicadas
  2. SET id_vacuna = "19"
  3. WHERE fecha_aplic >= "2011-05-01"  AND id_vacuna = "8"
pero al hacer eso me tira este error:

Error Code : 1062
Duplicate entry '2d2501cb18-OOTK110525MJCRPR-19-1' for key 1

segun lei, este error se da por que los campos son llaves primarias, pero este programa no lo realize yo, y no entiendo muy bien como estan las relaciones entre tablas....mi pregunta es....tengo que modificar las llaves primarias?....o hay algo en la consulta que pueda modificar para obtener resultados sin modificar las tablas?


de antemano gracias por la atencion

saludos

Última edición por gnzsoloyo; 28/05/2013 a las 19:18
  #2 (permalink)  
Antiguo 28/05/2013, 15:37
 
Fecha de Ingreso: abril-2013
Ubicación: Lima
Mensajes: 83
Antigüedad: 11 años
Puntos: 1
Respuesta: Duda con Update

esta visto, estas duplicando una llave primaria, eso no se puede
  #3 (permalink)  
Antiguo 28/05/2013, 19:22
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, 5 meses
Puntos: 2658
Respuesta: Duda con Update

Por lo pronto, esto es imposible:
Cita:
id_generales----- llave primaria
curp---------------- llave primaria
id_vacuna--------- llave primaria
dosis--------------- llave primaria
fecha_aplic
lote
clues
No pueden existir cuatro claves primarias en una tabla. Eso es imposible en cualquier DBMS porque es una restricción del modelo relacional (una PK es única, siempre).

Lo que sí puede existir es una única clave primaria compuesta por cuatro campos, y en ese caso la cosa se te complicará y mucho para hacer lo que pretendes.
de todos modos el temas es básico: No puedes hacer un UPDATE donde cambies una PK si al hacerlo intentas poner un valor que ya exista en la tabla.
Tengo la impresión de que no conoces mucho de los fundamentos de bases de datos...
Cita:
lo que necesito hacer, es actualizar el campo id_vacuna segun los datos de fecha_aplic e id_vacuna...es decir...modificar el campo id_vacuna a "19" de todos aquellos registros que tengan una fecha mayor o igual que "2011-04-01"...(esto en fecha_aplic) y que en id_vacuna tengan un "8"...no se si me di a entender, pero creo que al ver la consulta me entenderan...
¿Estás seguro de que lo que debes hacer es actualizar un registro existente?
¿No será que debes insertar uno nuevo para la nueva vacunación?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #4 (permalink)  
Antiguo 13/06/2013, 11:32
Avatar de bare87  
Fecha de Ingreso: mayo-2008
Mensajes: 42
Antigüedad: 15 años, 11 meses
Puntos: 0
Respuesta: Duda con Update

que tal, gracias por responder...y una disculpa por apenas revisar..

bueno, yo supongo que son llaves primarias por los iconos mostrados...no se mucho de base de datos, y muchos menos en el gestor de mysql, estaba acostumbrado a la interfaz del sql express 2005, en fin..les dejo una imagen de la tabla que quiero modificar..




que significa esa llave a un lado, no son llaves primarias?

no creo que sea necesario insertar una nueva vacuna, veran, el programa no lo desarrolle yo, asi que no se muy bien como esten las tablas de la bd....

me pregunto, no se podra cambiar ese dato de vacuna si se cumplen las condiciones de fecha?..


saludos
  #5 (permalink)  
Antiguo 13/06/2013, 12:16
Avatar de bare87  
Fecha de Ingreso: mayo-2008
Mensajes: 42
Antigüedad: 15 años, 11 meses
Puntos: 0
Respuesta: Duda con Update

que tal..les comento que ya pude realizar la consulta....era mas sencillo de lo que pense...esta fue la consulta que me ayudo...

Código SQL:
Ver original
  1. UPDATE dosis_aplicadas
  2. SET id_vacuna = "19"
  3. WHERE (SUBSTRING(fecha_aplic,1,10))>="2011-05-01" AND (SUBSTRING(fecha_aplic,1,10))<="2013-06-13" AND id_vacuna = "8"


saludos y gracias por todo
  #6 (permalink)  
Antiguo 13/06/2013, 12:50
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, 5 meses
Puntos: 2658
Respuesta: Duda con Update

Bueno, me alegro que pudieras solucionar el problema.
Te respondo esta pregunta:
Cita:
que significa esa llave a un lado, no son llaves primarias?
No exactamente. Esos íconos indican que todos esos campos componen una misma clave primaria. Es una clave compuesta.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 17/06/2013, 10:49
Avatar de bare87  
Fecha de Ingreso: mayo-2008
Mensajes: 42
Antigüedad: 15 años, 11 meses
Puntos: 0
Respuesta: Duda con Update

oooo...investigare al respecto....muhas gracias por la aclaracion...:)...

Saludos

Etiquetas: campo, registros, tabla, update
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:26.