34,587
社区成员
发帖
与我相关
我的任务
分享
CREATE TRIGGER 学分积查询 ON 选课表
FOR INSERT
AS
BEGIN
IF (UPDATE (成绩))
UPDATE 学分积表
SET 学分积表.学分积= B.学分积
FROM ( SELECT 选课表.学号,SUM((选课表.成绩-50)/10*课程表.课程学分)AS 学分积
FROM 选课表
INNER JOIN 课程表 ON 选课表.课程编号 = 课程表.课程编号
INNER JOIN 学生表 ON 学生表.学号=选课表.学号
GROUP BY 选课表.学号) B
WHERE 学分积表.学号 = B.学号
END
--修改视图
ALTER view 成绩 as
select 姓名,学生表.学号,成绩,T4.课程编号,所属系编号 ,T4.课程学分
from 选课表
inner join 学生表 on 学生表.学号=选课表.学号
inner join 班级表 on 班级表.班级编号=学生表.班级编号
INNER JOIN 课程表 T4 ON T4.课程编号=选课表.课程编号
--用这个语句验证学号对应的学分积是否正确
SELECT T1.学号 ,sum((成绩-50)/10*ISNULL(课程学分,0)) 'SCORE'
FROM 学分积表 T1
INNER JOIN 成绩 T2 ON T1.学号=T2.学号
GROUP BY T1.学号
--触发器
CREATE TRIGGER 学分积查询
ON 选课表
for insert,update,delete
as
begin
if (update (成绩))
UPDATE T1 SET T1.学分积=T2.SCORE
FROM 学分积表 T1
INNER JOIN (
SELECT T1.学号 ,sum((成绩-50)/10*ISNULL(课程学分,0)) 'SCORE'
FROM 学分积表 T1
INNER JOIN 成绩 T2 ON T1.学号=T2.学号 AND T1.学号 IN (SELECT 学号 FROM INSERTED)
GROUP BY T1.学号
) T2 ON T1.学号=T2.学号
END