0

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

        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 ;

在此处输入图像描述

4

1 回答 1

1

MySQL 6.0 系列于 2009 年停产(并且从未发布过生产级版本)。

Version 6.0.0-alpha-community-nt-debug,顾名思义,是 alpha 版本的调试版本——因此,它实际上是供 MySQL 项目的贡献者执行新版本的早期测试的。它当然应该在生产系统中使用。你到底是从哪里发现它的?

查找 v6.0 的文档有些困难,因为它很久以前就从 MySQL 网站上删除了。然而,甲骨文的网站上有一个存档,其中的文档SIGNAL说明:

此语句是在 MySQL 6.0.11 中添加的。

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

CALL error();

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

于 2013-11-15T10:33:57.610 回答