请选择 进入手机版 | 继续访问电脑版

MySQL触发器的创建和使用

[复制链接]
苍野狼步 发表于 2021-1-1 18:30:15 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
① 在学生表Student中界说一个触发器 tri1,保证新添加的学生的年龄(Sage)在16~25岁之间。
  1. DROP TRIGGER if EXISTS tri1;  #制止重复出现tri1delimiter ;;        #开始CREATE TRIGGER tri1 BEFORE INSERT ON student FOR EACH ROWBEGIN        IF(new.Sage > 25) OR (new.Sage > 16)THEN        SIGNAL SQLSTATE 'HYOOO' SET message_text = '输入的年龄要在16~25之间';        END IF;END;;delimiter;        #竣事#调用触发器insert into Student values('200231001', '王涛', '男', 30, 'IS')
复制代码
 
查察触发器:

调用效果:

 
② 在结果表SC中界说一个触发器tri2,当修改一个记载时,确保此记载的结果(Grade)在0~100分之间。
  1. DROP TRIGGER if EXISTS tri2;  #制止重复出现tri2delimiter ;;        #开始CREATE TRIGGER tri2 AFTER UPDATE ON sc FOR EACH ROWBEGIN        IF(new.grade > 100) OR (new.grade < 0)THEN        SIGNAL SQLSTATE &#39;HYOOO&#39; SET message_text = &#39;结果应在0~100分之间&#39;;        END IF;END;;delimiter;        #竣事#调用触发器update SCset Grade=120where Sno=&#39;200215122&#39;
复制代码
 
查察触发器:

调用效果:

 
③ 在学生表Student中创建一个触发器tri3,当删除学生表Student中学生时,自动删除结果表SC中相应学生的选课记载。
  1. DROP TRIGGER if EXISTS tri3;  #制止重复出现tri3delimiter ;;        #开始CREATE TRIGGER tri3 AFTER DELETE ON student FOR EACH ROWBEGIN        DELETE FROM sc WHERE sno = old.sno;END;;delimiter;        #竣事#调用触发器delete from Student where Sno = &#39;200215122&#39;
复制代码
 
查察触发器:

调用效果:


注:删除之后 Student表 和 SC表都没有 ‘200215122’

来源:https://blog.csdn.net/weixin_45482847/article/details/112006512
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


专注素材教程免费分享
全国免费热线电话

18768367769

周一至周日9:00-23:00

反馈建议

27428564@qq.com 在线QQ咨询

扫描二维码关注我们

Powered by Discuz! X3.4© 2001-2013 Comsenz Inc.( 蜀ICP备2021001884号-1 )