我一直在尝试用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('nc_censor'附近使用正确的语法在第1行
我没有在phpMyAdmin,服务器控制台或类似的东西中运行它。我需要在String
中从java运行它。我在课堂上打电话给this.mysql.update(trigger);
“基本上”运行它。
我已经尝试在ssh mysql中运行create trigger string,但它也不起作用。
答案 0 :(得分:0)
两件事:(1)你错过了触发器声明的FOR EACH ROW子句; (2)你不需要BEGIN和END,因为你的触发器只执行一个语句。试试这个:
CREATE TRIGGER `onnc_censorINSERT` AFTER INSERT ON nc_censor FOR EACH ROW INSERT INTO `ndb_log` (`table_name`, `action`, `time`) VALUES ('nc_censor', 'insert', UNIX_TIMESTAMP());