MySql 触发器和if语句的问题

2019-01-02 21:25发布

我的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版本的问题吗?如果是我应该怎么写?

标签: mysql
3条回答
唯独是你
2楼-- · 2019-01-02 21:43

原来改成这样就可以了。。。
估计是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 ;

查看更多
孤独总比滥情好
3楼-- · 2019-01-02 21:45

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

查看更多
看淡一切
4楼-- · 2019-01-02 21:49

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

查看更多
登录 后发表回答