首页 新闻 会员 周边

MySql 触发器和if语句的问题

0
悬赏园豆:100 [已解决问题] 解决于 2018-11-12 18:19

我的mysql版本是8.0.13,使用的是Mysql workbench

我的目的是当sage小于15时抛出警告

create trigger trStudent before update
on student for each row
begin
if new.sage <15 then
SIGNAL SQLSTATE 'HY000' SET MESSAGE_TEXT='asd';
END IF;
end

以上代码有一些错误

但是只要删掉begin和if语句就没有问题了
如下

create trigger trStudent before update
on student for each row
SIGNAL SQLSTATE 'HY000' SET MESSAGE_TEXT='asd';

这是为什么?
还有我在网上复制粘贴的Mysql 的触发器代码都有语法问题,这是mysql版本的问题吗?如果是我应该怎么写?

托马斯blue_cat的主页 托马斯blue_cat | 初学一级 | 园豆:114
提问于:2018-11-11 12:25
< >
分享
最佳答案
0

建议去mysql官网查一下文档看能找到不,我把你的代码复制到我这里,执行没问题。我的版本是5

收获园豆:70
会长 | 专家六级 |园豆:12401 | 2018-11-12 14:44
其他回答(2)
0

begin和if都删除了,那还执行什么,,,
错误提示:声明不完整
检查一下,你表中定义的字段名等等,是否存在或者有误

收获园豆:30
Luckyfish小文 | 园豆:335 (菜鸟二级) | 2018-11-12 11:11
0

原来改成这样就可以了。。。
估计是MySQL不能识别带分号的块。。。
只要把结束符改成别的东西就好了

delimiter //
create trigger trStudent before update
on student for each row
begin
if new.sage <15 then
SIGNAL SQLSTATE 'HY000' SET MESSAGE_TEXT='asd';
END IF;
end//

delimiter ;

托马斯blue_cat | 园豆:114 (初学一级) | 2018-11-12 18:17
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册