SQL SERVER中,在选课表插入一条记录时,如何用触发器在学生表中的学分字段加上相关选修课程的学分?

学生(学号,姓名,年龄,..,学分),选课(学生编号,课程编号,成绩),课程(课程编号,课程名,...,学分)大概用到的就这三个关系,我绕来绕去写不出来,求个标准答案~... 学生(学号,姓名,年龄,..,学分),选课(学生编号,课程编号,成绩),课程(课程编号,课程名,...,学分)
大概用到的就这三个关系,我绕来绕去写不出来,求个标准答案~
展开
 我来答
skyfukk
2011-12-21 · TA获得超过1187个赞
知道小有建树答主
回答量:966
采纳率:100%
帮助的人:631万
展开全部
看到楼主的表关系,我想,学分应该是该学生的总分吧,课程里的学分,是该课程的所有学生的总分吧,如果如以上所述,代码如下

create trigger trIns
on 选课
for insert
as
begin
update 学生 set 学分=学生.学分+inserted.成绩
where exists(select * from inserted where inserted.学生编号=学生.学号)
/*下面是课程的总成绩(可选)
update 课程 set 学分=课程.学分+inserted.成绩
where exists(select * from inserted where inserted.课程编号=课程.课程编号)
*/
end
End灬琦琦
2011-12-21 · TA获得超过956个赞
知道小有建树答主
回答量:181
采纳率:0%
帮助的人:195万
展开全部
CREATE TRIGGER xf_tri
AFTER INSERT
ON xuanke_table --选课表中发生插入操作之后,触发 触发器操作
DECLARE
v_xuefen NUMBER;
BEGIN
SELECT xuefen
INTO v_xuefen
FROM xuanke_table
WHERE xuehao =:new.kecheng_id
AND xuehao = :new.xuehao; --取得最新添加的记录的学生号,课程号,学分

UPDATE student_table
SET xuefen=v_xuefen
WHERE xuehao=:new.xuehao
AND kecheng_id=:new.kecheng_id; --修改学生表中的学分记录
END;

我在oracle中写的,没编译,你试试能不能通过吧~大体流程是这样的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
q465897859
2011-12-21 · TA获得超过117个赞
知道答主
回答量:118
采纳率:0%
帮助的人:63.8万
展开全部
create trigger ins_xuefen
on 学课表
for insert
as
begin
update 学生 set 学分=学分+c.学分 from 学生 a ,inserted b, 课程 c
where a.学号=b.学生编号 and b.课程编号=c.课程编号
end
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
一支红缨枪
2011-12-20 · 超过26用户采纳过TA的回答
知道答主
回答量:54
采纳率:100%
帮助的人:42.1万
展开全部
create trigger dbo.trigger1 on insert
for
declare @fen int,@xiehao int
select top 1 @xiehao = 学生编号 from inserted
select top 1 @fen = 学分 from 课程 where 课程编号 = (select 课程 from inserted)
update 学生 set 学分 = isnull(学分) +@fen where 学号 = @xiehao
追问
update  学生 set 学分 = isnull(学分) +@fen where 学号 = @xiehao 
可以这么写的吗?直接用WHERE?不用SELECT吗?
追答
是的,update 语句支持 where 子句,定位修改的记录

这是从SQL Server 2005 联机丛书复制来的update语法:
UPDATE
[ TOP ( expression ) [ PERCENT ] ]
{ | rowset_function_limited
[ WITH ( [ ...n ] ) ]
}
SET
{ column_name = { expression | DEFAULT | NULL }
| { udt_column_name.{ { property_name = expression
| field_name = expression }
| method_name ( argument [ ,...n ] )
}
}
| column_name { .WRITE ( expression , @Offset , @Length ) }
| @variable = expression
| @variable = column = expression [ ,...n ]
} [ ,...n ]
[ ]
[ FROM{ } [ ,...n ] ]
[ WHERE {
| { [ CURRENT OF
{ { [ GLOBAL ] cursor_name }
| cursor_variable_name
}
]
}
}
]
[ OPTION ( [ ,...n ] ) ]
[ ; ]
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2011-12-20
展开全部
oracle表情插入
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式