SQL2000中,想让往一个表中插入数据时自动更新另一个表中的某一相关数据怎么建触发器?

比如说在学生选课表中插入一条选课信息,课程表中该课程的选课人数一栏中就自动加一,求指导。... 比如说在学生选课表中插入一条选课信息,课程表中该课程的选课人数一栏中就自动加一,求指导。 展开
 我来答
cy_paul
2012-12-01 · TA获得超过821个赞
知道小有建树答主
回答量:769
采纳率:100%
帮助的人:242万
展开全部
这个你得建插入、删除和更新三种触发器。
create trigger tr_in_选课表 on 选课表
FOR INSERT
as
update 课程表 set 选课人数=选课人数+1 where 课程编号=(select 课程编号 from inserted)
go
--删除的,删除时那就要减1
create trigger tr_del_选课表 on 选课表
FOR DELETE
AS
update 课程表 set 选课人数 = 选课人数-1 where 课程编号=(select 课程编号 from deleted)
GO

--更新选课表的时候
create trigger tr_up_选课表 on 选课表
FOR update
as
----如果更新的是课程编号,即本来先的是英语,后来改数学了
if update(课程编号) begin
update 课程表 set 选课人数=选课人数-1 where 课程编号=(select 课程编号 from deleted)
update 课程表 set 选课人数=选课人数+1 where 课程编号=(select 课程编号 from inserted)
---第一行把旧编号的选课人数-1
--第二行把新编号的选课人数+1
end
--- 大体上就是这么一个逻辑,自己再稍微按需完善一下即可。
GO
追问
接着上面这个问题,我想在学生选课表中插入选课记录的时候先检验课程表中的已选人数是不是超过最大限制人数了,如果超过了就输出提示信息,没超过就完成插入操作并更新课程表中的已选人数,触发器语句应该怎么写?
追答
这个只要修改插入触发器,增加一个And条件即可:
create trigger tr_in_选课表 on 选课表
FOR INSERT
as

update 课程表 set 选课人数=选课人数+1 where 课程编号=(select 课程编号 from inserted)
AND 选课人数<限制人数
go
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式