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_user
和user_contact
。在forum_user
表中,我有四列,如ID
、first_name
、last_name
、Date
,在user_contact
表中我有两列ID
和email
。
现在我想创建一个触发器,当一行将插入到 forum_user 表中时,该触发器将在 user_contact 表中插入一行,其中最近的值来自 first_name
和 last_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 触发语法错误的主要内容,如果未能解决你的问题,请参考以下文章