我正在创建触发器,但它显示以下错误:
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 ;
答案 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(尽管版本较低)版本号实际上是一个更新的版本。)