Mysql 触发器分隔符问题

Mysql 触发器分隔符问题,mysql,triggers,Mysql,Triggers,使用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 我尝试运行的

使用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个英镑符号。这似乎是一个非常小和愚蠢的东西,但我不知道它对该语句有什么不喜欢。

分隔符不是SQL语法,它是mysql命令行客户端接受的一个命令,用于更改其读取和向服务器发送查询的方式。PhpMyAdmin和服务器都不知道这方面的任何信息


在本例中,只需将触发器作为查询发送,不带尾随//即可。或者,为了让PMA正确执行,您可能需要将其放入文件并发送。我不太确定,因为我发现PMA作为一种工具经常会做这样愚蠢的事情,这会让你的生活更加困难。

所以我最终通过从查询中删除开始和结束,而不使用任何分隔符来实现它。我不确定我的MySQL版本是否在BEGIN/End语句或其他方面存在问题,但触发器最终被创建。

我在没有任何分隔符的情况下尝试了它,并尝试从文件中运行查询,但它仍然不起作用。我还尝试从MySQL控制台运行查询,但在两种情况下,它给了我相同的错误:如果您使用BEGIN/END并尝试使用MySQL命令行创建它,那么您必须更改分隔符。否则,因为触发器是一条语句,所以不需要那里的开始/结束块。