Ver Mensaje Individual
  #1 (permalink)  
Antiguo 08/11/2014, 16:58
DandyCC
 
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.