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));
}
您的SQL语法有错误;检查手册 对应于您的MySQL服务器版本,以便使用正确的语法 在'delimiter //附近创建TRIGGER agregarMateriaCurso后插入 MateriasDoctorad'在第1行
答案 0 :(得分:1)
第一个问题是缺少单词begin,第二个问题是java的触发器插入并解决了删除“分隔符//”。
答案 1 :(得分:0)
错过了BEGIN关键字,请尝试此查询 -
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 ;
答案 2 :(得分:0)
我认为你在for循环中缺少BEGIN:
-> 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;//