mysql在表sc上定义1个update触发程序,用于检查更新每一行时Grade位于0-100的范围内,否则回退。

问题遇到的现象和发生背景

mysql在表sc上定义1个update触发程序,用于检查更新每一行时Grade位于0-100的范围内,否则回退。

用代码块功能插入代码,请勿粘贴截图

#7.在表sc上定义1个update触发程序,用于检查更新每一行时Grade位于0-100的范围内,否则回退。
delimiter //
create trigger cfq before update on sc
for each row
begin
if new.grade<0 or new.grade>100 then
set new.grade=old.grade;
set @info='不符合要求的数据';
end if;
end //
delimiter ;

运行结果及报错内容

set @info='不符合要求的数据';
是什么意思啊

我的解答思路和尝试过的方法

什么意思这句话 不理解

我想要达到的结果

求解啊 uu们

1、使用check约束实现更简洁高效:
ALTER TABLE sc ADD CONSTRAINT CHK_SC_GRADE CHECK (grade>=0 and grade<=100 );
2、条件ew.grade<0 or new.grade>100 与 grade>=0 and grade<=100 等效,但grade>=0 and grade<=100 更直观。

3、MySQL触发器中变量变量前面加’@’,无需定义,可以直接使用:
set @info='不符合要求的数据'; 给变量info赋值'不符合要求的数据'。