触发器分隔符问题

时间:2012-11-04 02:17:54

标签: 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

我正在尝试运行的查询是:

 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磅符号。这看起来像是一个非常小而且愚蠢的东西,但是我无法弄清楚它对这个陈述不喜欢什么。

2 个答案:

答案 0 :(得分:0)

DELIMITER不是SQL语法,它是mysql命令行客户端接受的命令,用于更改查询和向服务器发送查询的方式。 PhpMyAdmin和服务器都不知道它。

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

答案 1 :(得分:0)

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