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

[SOLUCIONADO] Detectar errores en un UPDATE

Estas en el tema de Detectar errores en un UPDATE en el foro de Mysql en Foros del Web. Buenas. Tengo un script php que actualiza varios registros en la BD. Recibe una relación de valores y actualiza otro de una tabla. Esta es ...
  #1 (permalink)  
Antiguo 08/11/2014, 16:58
 
Fecha de Ingreso: junio-2012
Mensajes: 147
Antigüedad: 11 años, 10 meses
Puntos: 1
Detectar errores en un UPDATE

Buenas. Tengo un script php que actualiza varios registros en la BD. Recibe una relación de valores y actualiza otro de una tabla. Esta es la tabla.

Código SQL:
Ver original
  1. CREATE TABLE IF NOT EXISTS `tbl_alumnos_notas` (
  2.   `alumno` INT(11) NOT NULL,
  3.   `idcurso` INT(11) NOT NULL,
  4.   `asignatura` VARCHAR(40) CHARACTER SET utf8 COLLATE utf8_spanish_ci NOT NULL,
  5.   `trimestre` tinyint(4) NOT NULL,
  6.   `nota` VARCHAR(40) CHARACTER SET utf8 COLLATE utf8_spanish_ci NOT NULL DEFAULT '',
  7.   PRIMARY KEY (`alumno`,`idcurso`,`asignatura`,`trimestre`,`nota`),
  8.   KEY `tbl_alumnos_notas_fk_2` (`idcurso`)
  9. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_swedish_ci;

El script recibe un número indeterminado de registros con estos 5 valores. Lo que quiero es detectar que los 4 primeros campos existan en la tabla para cada uno de los registros que llegan. Por ejemplo, si recibo (1, 2, 'Historia', 3, 9) es que el alumno 1, que pertenece al curso 2, en la asignatura Historia tiene una nota de 9 en el trimestre 3. Pues lo que quiero es comprobar si efectivamente existe en la tabla un registro con alumno = 1, idcurso = 2, asignatura = 'Historia' y trimestre = 3. Y eso para todos los registros que lleguen.

Si uso un UPDATE normal y hay registros que no existen en la tabla, la actualización no devuelve ningún código de error. Puedo usar mysql_affected_rows, pero no me dice qué registros son los que no existen.

¿Hay alguna forma de hacer esto sin hacer una consulta por cada registro que reciba?

Gracias.
  #2 (permalink)  
Antiguo 10/11/2014, 03:01
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Detectar errores en un UPDATE

1.- UPDATE retorna false cuando no se puede ejecutar.
2.- Lo normal seria usar INSERT INTO ... ON DUPLICATE KEY UPDATE
3.- Esa primary key con todos los campos no lo veo muy claro

Fijate

1, 2, 'Historia', 3, 9
1, 2, 'Historia', 3, 10

esos dos registros son perfectamente posibles. Solo se producira el DUPLICATE KEY si intentas entrar dos veces la misma nota para el mismo alumno, pero luego que sentido tiene actualizar (UPDATE) nada si es todo lo mismo.

Si cada alumno puede tener varias notas por trimestre y asignatura te podria servir (Si un alumno saca dos 9 no se los vas a contar....), pero si intentas usar un update no si es lo que quieres

Si la PRIMARY KEY fuera

Código MySQL:
Ver original
  1. PRIMARY KEY (`alumno`,`idcurso`,`asignatura`,`trimestre`),

te asegurarias que solo haya una nota por alumno,curso,asignatura y trimestre.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 14/11/2014, 18:06
 
Fecha de Ingreso: junio-2012
Mensajes: 147
Antigüedad: 11 años, 10 meses
Puntos: 1
Respuesta: Detectar errores en un UPDATE

Tienes razón. Voy a cambiarlo y te digo si tengo más problemas.

Gracias!

Etiquetas: 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 01:37.