delimiter //
CREATE TRIGGER agregarMateriaCurso AFTER INSERT ON MateriasDoctorado
FOR EACH ROW
BEGIN
IF (SELECT troncal FROM Materias WHERE codigo=NEW.codigoMateria)=1
THEN
UPDATE CursoDoctorado SET cantidadMateriasTroncales=cantidadMateriasTroncales+1 WHERE codigo=NEW.codigoDoctorado;
ELSE
UPDATE CursoDoctorado SET cantidadMateriasEspecificas=cantidadMateriasEspecificas+1 WHERE codigo=NEW.codigoDoctorado;
END IF;
END;//
delimiter ;
public class Consulta {
public static String[] triggers = {
"delimiter // CREATE TRIGGER agregarMateriaCurso AFTER INSERT ON MateriasDoctorado FOR EACH ROW BEGIN IF (SELECT troncal FROM Materias WHERE codigo=NEW.codigoMateria)=1 THEN UPDATE CursoDoctorado SET cantidadMateriasTroncales=cantidadMateriasTroncales+1 WHERE codigo=NEW.codigoDoctorado; ELSE UPDATE CursoDoctorado SET cantidadMateriasEspecificas=cantidadMateriasEspecificas+1 WHERE codigo=NEW.codigoDoctorado; END IF; END;// delimiter ;", "delimiter // CREATE TRIGGER eliminarMateriaCurso AFTER DELETE ON MateriasDoctorado FOR EACH ROW BEGIN IF (SELECT troncal FROM Materias WHERE codigo=OLD.codigoMateria)=1 THEN UPDATE CursoDoctorado SET cantidadMateriasTroncales=cantidadMateriasTroncales-1 WHERE codigo=OLD.codigoDoctorado; ELSE UPDATE CursoDoctorado SET cantidadMateriasEspecificas=cantidadMateriasEspecificas-1 WHERE codigo=OLD.codigoDoctorado; END IF; END;// delimiter ; "
};
}
for(String sentencia:Consulta.triggers){
System.out.println(mysqli.update(sentencia));
}
You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use
near ‘delimiter // CREATE TRIGGER agregarMateriaCurso AFTER INSERT ON
MateriasDoctorad’ at line 1
The first problem was the missing word begin, and the second problem was the trigger insertion from java and was solved removing the “delimiter //”.