我遇到了使用MySQL和phpmyadmin v3.4.5在表上创建触发器的问题。经过一些研究,似乎这是一个常见问题,但我发现的修复都没有为我工作。我得到的错误是:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'END' at line 8
我正在尝试运行的查询是:
CREATE TRIGGER book_insert
AFTER INSERT ON `books`
FOR EACH ROW BEGIN
INSERT INTO products
(ProductID,Type,Title,Price)
VALUES
(books.ProductID,0,books.Title,0)
END
//
我已经在查询输入下面的文本中将分隔符设置为//,因为我已经读过PHPMyAdmin不喜欢你在查询中使用delimiter关键字。我也玩过分隔符的位置,在END和'//'之间没有空格,有一个空格,并在另一条线上尝试它。我也尝试了不同的分隔符,如默认分号,2美元符号和2磅符号。这看起来像是一个非常小而且愚蠢的东西,但是我无法弄清楚它对这个陈述不喜欢什么。
答案 0 :(得分:0)
DELIMITER不是SQL语法,它是mysql命令行客户端接受的命令,用于更改查询和向服务器发送查询的方式。 PhpMyAdmin和服务器都不知道它。
在这种情况下,只需将触发器作为查询发送,不带尾随//。或者要让PMA正确执行它,您可能必须将其放入文件并发送。我不确定是因为我发现PMA作为一种工具经常做这样的愚蠢事情会让你的生活变得更加困难。
答案 1 :(得分:0)
所以我终于通过从查询中删除BEGIN和END并且根本不使用任何分隔符来实现它。我不确定我的MySQL版本是否存在BEGIN / End语句的某些问题,但最终创建了触发器。