MySQL 触发语法错误

Posted

技术标签:

【中文标题】MySQL 触发语法错误【英文标题】:MySQL trigger syntax error 【发布时间】:2013-01-18 23:20:42 【问题描述】:

我只是为 mysql 创建一个触发器。但我收到以下错误。

ERROR 1064 (42000):您的 SQL 语法有错误;检查 与您的 MySQL 服务器版本相对应的手册 在第 1 行的“END”附近使用的语法

下面是我创建触发器的代码。

DROP TRIGGER IF EXISTS user_contact_after_insert;
DELIMITER //
CREATE TRIGGER `user_contact_after_insert`
AFTER INSERT ON `forum_user`
  FOR EACH ROW
  BEGIN
    INSERT INTO `user_contact` (email) VALUES (LCASE(NEW.FIRST_NAME NEW.LAST_NAME+'@gmail.com'));
  END;
DELIMETER ;

这里有两张桌子forum_useruser_contact。在forum_user 表中,我有四列,如IDfirst_namelast_nameDate,在user_contact 表中我有两列IDemail

现在我想创建一个触发器,当一行将插入到 forum_user 表中时,该触发器将在 user_contact 表中插入一行,其中最近的值来自 first_namelast_name

我在这段代码中做错了什么吗? 任何帮助都将是可观的。

【问题讨论】:

【参考方案1】:

更改DELIMITER 并使用CONCAT

DROP TRIGGER IF EXISTS user_contact_after_insert;

DELIMITER // 

CREATE TRIGGER `user_contact_after_insert` 
AFTER INSERT ON `forum_user` 
FOR EACH ROW 
BEGIN 
    INSERT INTO `user_contact` (email) 
    VALUES (LCASE(CONCAT(NEW.FIRST_NAME, NEW.LAST_NAME,'@gmail.com'))); 
END//    --- <<=== HERE

DELIMITER ;

【讨论】:

以上是关于MySQL 触发语法错误的主要内容,如果未能解决你的问题,请参考以下文章

mysql触发器中的语法错误

MySql 触发语法错误 1064 空单引号

尝试解决 MYSQL 更新触发器的语法错误

如果存在 MySQL 触发器语法错误

更新前的 MySQL 使用 PhpMyAdmin 触发插入语法错误

纠正我在 mysql 触发器中的语法错误