MySql 触发器和if语句的问题

2019-01-02 21:44发布

问题:

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

回答1:

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



回答2:

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



回答3:

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



标签: