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
最佳答案
第一个问题是缺少单词开头,第二个问题是从 java 中插入触发器并解决了删除“分隔符//”。
关于java - mysql触发器麻烦 IF ELSE UPDATE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13013994/