![](/img/trans.png)
[英]code works but it keeps giving me the error: InputMismatchException and
[英]MySQL: Create a trigger keeps giving me syntax error
我一直在尝试从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,服务器控制台或类似的程序中运行此程序。 我需要从Java在String
运行它。 我称之为this.mysql.update(trigger);
在我的班级中,“基本”运行它。
我试过在ssh mysql中运行创建触发器字符串,但是它也不起作用。
两件事:(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());
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.