我一直在尝试从java创建一个触发器,它只是不起作用 .
String trigger = String.format("CREATE TRIGGER `%s` AFTER %s ON %s BEGIN INSERT INTO `ndb_log` (`table_name`, `action`, `time`) VALUES ('%s', '%s', UNIX_TIMESTAMP()) END;",
name, this.event.toUppercase(), this.table, this.table, this.event.toLowercase());
CREATE TRIGGER `onnc_censorINSERT` AFTER INSERT ON nc_censor BEGIN INSERT INTO `ndb_log` (`table_name`, `action`, `time`) VALUES ('nc_censor', 'insert', UNIX_TIMESTAMP()); END;
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:SQL语法中有错误;检查与MySQL服务器版本对应的手册,以便在'BEGIN INSERT INTO ndb_log(table_name,action,time)VALUES(第1行'nc_censor')附近使用正确的语法
我没有在phpMyAdmin,服务器控制台或类似的东西中运行它 . 我需要在 String
中从java运行它 . 我在我的 class 中调用 this.mysql.update(trigger);
,"basically"运行它 .
我试过在ssh mysql中运行create trigger string,但它也不起作用 .
1 回答
两件事:(1)你错过了触发器声明的FOR EACH ROW子句; (2)你不需要BEGIN和END,因为你的触发器只执行一个语句 . 试试这个: