江江伊伊 2022-11-23 12:33 采纳率: 100%
浏览 49
已结题

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条回答 默认 最新

  • curating 2022-11-23 18:21
    关注

    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赋值'不符合要求的数据'。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 12月16日
  • 已采纳回答 12月8日
  • 创建了问题 11月23日

悬赏问题

  • ¥15 win2012磁盘空间不足,c盘正常,d盘无法写入
  • ¥15 用土力学知识进行土坡稳定性分析与挡土墙设计
  • ¥70 PlayWright在Java上连接CDP关联本地Chrome启动失败,貌似是Windows端口转发问题
  • ¥15 帮我写一个c++工程
  • ¥30 Eclipse官网打不开,官网首页进不去,显示无法访问此页面,求解决方法
  • ¥15 关于smbclient 库的使用
  • ¥15 微信小程序协议怎么写
  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启