添加MySQL触发器:不可见(对我来说)语法错误

时间:2012-10-17 21:35:59

标签: mysql triggers concatenation concat

注意:我最初认为我的问题与CONCAT有关,但由于确切的错误仍然存​​在,即使我完全从我的查询中删除了CONCAT,我认为我应该完全覆盖原来的帖子。


我正在尝试设置触发器,并不断收到语法错误 我试过这个时

CREATE TRIGGER set_aka_name 
BEFORE INSERT ON sandbox_person
FOR EACH ROW
BEGIN
  IF (NEW.aka IS NULL) THEN
    SET NEW.aka = 'test value';
  END IF;
END

......我收到了这个错误:

  

1064 - 您的SQL语法出错;检查手册   对应于您的MySQL服务器版本,以便使用正确的语法   靠近''第6行


当尝试这个(没有IF peren's)

CREATE TRIGGER set_aka_name 
BEFORE INSERT ON sandbox_person
FOR EACH ROW
BEGIN
  IF NEW.aka IS NULL THEN
    SET NEW.aka = 'test value';
  END IF;
END

...我得到 完全相同 错误

  

1064 - 您的SQL语法出错;检查手册   对应于您的MySQL服务器版本,以便使用正确的语法   靠近''第6行


是简单的......但我只是没有看到它 我在使用MySQL 5.1.36 我错过了什么?
有什么指针吗?

2 个答案:

答案 0 :(得分:0)

试试这个:

CREATE TRIGGER set_aka_name 
BEFORE INSERT ON sandbox_person
FOR EACH ROW
BEGIN
  IF NEW.aka IS NULL THEN
    NEW.aka = CONCAT(NEW.fname, ' ', NEW.lname);
  END IF;
END

IF () 功能IF 声明see this

之间存在差异

答案 1 :(得分:0)

首先尝试更改分隔符:

DELIMITER |

CREATE TRIGGER set_aka_name 
BEFORE INSERT ON sandbox_person
FOR EACH ROW
BEGIN
  IF NEW.aka IS NULL THEN
    SET NEW.aka = 'test value';
  END IF;
END|

DELIMITER ;

也许MySQL会看到第一个“;”作为CREATE TRIGGER的结束