delimiter $$ create trigger t_cjinsert before insert on xs_kc for each row begin declare xf int; set xf=(select 学分 from kc where 课程号=new.课程号); set new.学分=xf; if new.成绩>=60 then if (select 总学分 from xsqk where 学号=new.学号) is not null then update xsqk set 总学分=总学分+xf where 学号=new.学号; else update xs_kc set 学分=xf where 学号=new.学号 ; end if; end if; end; $$ delimiter; insert xs_kc(学号,课程号,成绩)values('2021130105','102',65);为什么最后一条插入语句失败
时间: 2024-01-05 22:04:25 浏览: 68
毕设和企业适用springboot企业数据管理平台类及跨境电商管理平台源码+论文+视频.zip
根据你提供的触发器代码,当插入一条新的记录到 `xs_kc` 表时,会自动为该记录计算学分,并更新学生的总学分。但是,在最后一条插入语句中,插入的成绩是 65 分,因此触发器不会更新学生的总学分,而是直接更新了 `xs_kc` 表中的学分字段,但是在你的数据库中,`xs_kc` 表中没有学号为 '2021130105' 的记录,因此插入语句失败。
如果你想要插入一条新的记录并触发触发器,可以将成绩设置为 60 分或以上,或者手动先插入一条记录到 `xs_kc` 表中,再执行插入语句。
阅读全文