0

我在使用 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 不喜欢您在查询中使用分隔符关键字。我也玩过分隔符的位置,在 END 和 '//' 之间没有空格,有一个空格,然后在另一行尝试。我还尝试了不同的分隔符,例如默认分号、2 个美元符号和 2 个英镑符号。这似乎是一件非常小而愚蠢的事情,但我不知道它不喜欢那个陈述。

4

2 回答 2

0

DELIMITER 不是 SQL 语法,它是 mysql 命令行客户端接受以更改其读取和向服务器发送查询的方式的命令。PhpMyAdmin 和服务器都对此一无所知。

在这种情况下,只需将触发器作为查询发送,而无需尾随 //。或者要让 PMA 正确执行它,您可能必须将其放入文件中并发送。我不确定究竟是因为我发现 PMA 作为一种工具经常会做类似这样的愚蠢事情,这会让你的生活更加困难。

于 2012-11-04T02:29:13.967 回答
0

所以我终于通过从查询中删除 BEGIN 和 END 并且根本不使用任何分隔符来让它工作。我不确定我的 MySQL 版本是否存在 BEGIN/End 语句或其他问题,但最终创建了触发器。

于 2012-11-04T05:52:15.863 回答