-1

注意:
最初认为我的问题与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 行的 '' 附近使用正确的语法


尝试这个时(没有IFperen 的)

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 上。
我错过了什么?
任何指针?

4

2 回答 2

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 语句之间有区别(请参阅this

于 2012-10-17T21:50:33.827 回答
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 的结尾

于 2012-10-18T14:38:01.467 回答