【问题标题】:MySQL trigger syntax errorMySQL 触发语法错误
【发布时间】: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

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

【问题讨论】:

    标签: mysql triggers


    【解决方案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 ;
    

    【讨论】:

      猜你喜欢
      • 2014-07-21
      • 2015-08-09
      • 1970-01-01
      • 1970-01-01
      • 2016-12-19
      • 2015-06-02
      • 2018-07-29
      • 1970-01-01
      相关资源
      最近更新 更多