解决方法:
执行sql语句时,使用java.sql.Statement代替java.sql.PreparedStatement。
java.sql.PreparedStatement ps = conn.prepareStatement(sql);
ps.execute();
被
java.sql.Statement state = conn.createStatement();
state.execute(sql1);
代替。即可成功添加触发器。
研究:
Statement与PreparedStatement的区别: PreparedStatement接口继承Statement,PreparedStatement是预处理语句,其性能、安全性、可读性高于Statement。满足情况的条件下,要尽可能的使用PreparedStatement来执行sql语句。
以上问题可能是由于预处理语句对原sql语句重新处理后,未通过编译,导致报错。还需深入研究,待补充