繁体   English   中英

MySQL:创建触发器会不断给我语法错误

[英]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_logtable_nameactiontime )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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM