添加MySQL触发器:(对我而言)不可见语法错误 [英] Adding MySQL Trigger: invisible (to me) Syntax Error

查看:64
本文介绍了添加MySQL触发器:(对我而言)不可见语法错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

NOTE:
I initially thought my problem had to do with CONCAT, but since the exact error persisted even when I completely eliminated CONCAT from my query, I figured I should completely over-write of my original post.



我正在尝试设置触发器,并不断出现语法错误。

当我尝试此操作


I'm trying to set a trigger, and keep getting a Syntax Error.
When I tried this

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

...我收到此错误:

...I got this error:


1064-您的SQL语法有错误;检查手册
对应于您的MySQL服务器版本,以获取正确的语法以在第6行的''附近使用

1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 6



并且尝试 this 时(没有 IF 佩伦的)

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

...我得到 相同的 错误

...I get the same exact error


1064-您的SQL语法有错误;检查手册
对应于您的MySQL服务器版本,以获取正确的语法以在第6行的''附近使用

1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 6



简单来说就是 got ...但是我只是没有看到它。

我在MySQL 5.1.36上.br

我缺少什么?

任何指针吗?


It's got to be something simple ... but I'm just not seeing it.
I'm on MySQL 5.1.36.
What am I missing?
Any pointers?

推荐答案

尝试首先更改定界符:

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的结尾

Maybe MySQL sees the first ";" as the end of CREATE TRIGGER

这篇关于添加MySQL触发器:(对我而言)不可见语法错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆