创建触发器时获取错误代码:1064

时间:2013-11-15 10:00:55

标签: mysql triggers

我正在创建触发器,但它显示以下错误:

        15:22:44    create trigger trigger3 before update on test.testdata    
    for each row  
    begin      
    if new.qty < 50 then         
    SIGNAL SQLSTATE VALUE '99999'       
    SET MESSAGE_TEXT = 'An error occurred';       
    end if;    
    end;    
    Error Code: 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 'SQLSTATE VALUE '99999'       
SET MESSAGE_TEXT = 'An error occurred';       
end i' at line 8    0.000 sec

我的触发器代码是:

delimiter //

create trigger trigger3 before update on test.testdata

for each row 
begin

if new.qty < 50 then

    SIGNAL SQLSTATE VALUE '99999'
      SET MESSAGE_TEXT = 'An error occurred';

end if;

end;

//
delimiter ;

enter image description here

1 个答案:

答案 0 :(得分:1)

MySQL 6.0系列是discontinued in 2009(从未达到生产级别版本)。

版本6.0.0-alpha-community-nt-debug,顾名思义,是alpha版本的调试版本 - 因此,它实际上是为MySQL项目的贡献者执行新版本的早期测试。它当然应该在生产系统中使用。你在地球上的哪个地方遇到过它?

查找v6.0的文档有点困难,因为很久以前它已经从MySQL网站中删除了。但是,Oracle网站上有一个存档,其中the documentation for SIGNAL表示:

  

此声明已在MySQL 6.0.11中添加。

因此,您将无法在此版本的MySQL中使用SIGNAL。如果您需要抛出错误,可以执行故意错误的语句,例如调用不存在的过程:

CALL error();

但是,如果从上面所说的内容不明显,你真的应该升级到稳定的生产就绪(“通用版本”)版本的MySQL服务器 - 例如v5.6.14(尽管版本较低)版本号实际上是一个更新的版本。)