问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

SQL2005 建立学生选课触发器stu_course 对应学生选课不能超过4门

发布网友 发布时间:2022-11-02 09:47

我来回答

2个回答

热心网友 时间:2023-10-23 06:30

下面是测试表关系:

(学生表student,课程表course,学生选课表sc)

为学生表和课程表插入一些测试数据。

为sc表创建触发器。

IF OBJECT_ID ('stu_course', 'TR') IS NOT NULL
   DROP TRIGGER stu_course
GO

CREATE TRIGGER stu_course
ON sc
FOR INSERT
AS
DECLARE
@stuidVARCHAR(50),
@courseidVARCHAR(50),
@stunameVARCHAR(50),
@coursenameVARCHAR(50),
@msgVARCHAR(100)

SELECT @stuid=STUDENTID,@courseid=COURSEID FROM Inserted

IF EXISTS(SELECT 1 FROM sc WHERE STUDENTID=@stuid AND COURSEID=@courseid GROUP BY STUDENTID,COURSEID HAVING COUNT(1)=2)
BEGIN
SELECT @stuname=NAME FROM student WHERE ID=@stuid
SELECT @coursename=NAME FROM course WHERE ID=@courseid
SET @msg='学生【'+@stuname+'('+@stuid+')】已选择课程【'+@coursename+'('+@courseid+')】。'
--SELECT @msg
RAISERROR(@msg,10,1)
ROLLBACK TRAN
RETURN
END

IF EXISTS(SELECT 1 FROM sc WHERE STUDENTID=@stuid GROUP BY STUDENTID HAVING COUNT(1)>4)
BEGIN
SELECT @stuname=NAME FROM student WHERE ID=@stuid
SELECT @coursename=NAME FROM course WHERE ID=@courseid
SET @msg='学生【'+@stuname+'('+@stuid+')】的选课已满4门,不能再选择。'
--SELECT @msg
RAISERROR(@msg,10,1)
ROLLBACK TRAN
RETURN
END
GO

给sc表插入数据测试。

INSERT INTO sc( STUDENTID, COURSEID )VALUES  ( '01',  '01' )
INSERT INTO sc( STUDENTID, COURSEID )VALUES  ( '01',  '01' )
INSERT INTO sc( STUDENTID, COURSEID )VALUES  ( '01',  '02' )
INSERT INTO sc( STUDENTID, COURSEID )VALUES  ( '01',  '03' )
INSERT INTO sc( STUDENTID, COURSEID )VALUES  ( '01',  '04' )
INSERT INTO sc( STUDENTID, COURSEID )VALUES  ( '01',  '05' )

执行第二句时提示:

学生【小明(01)】已选择课程【数学(01)】。

消息 3609,级别 16,状态 1,第 1 行

事务在触发器中结束。批处理已中止。

继续执行3,4,5句。

执行第6句时提示:

学生【小明(01)】的选课已满4门,不能再选择。

消息 3609,级别 16,状态 1,第 1 行

事务在触发器中结束。批处理已中止。


如有疑问,继续追问。

热心网友 时间:2023-10-23 06:31

通过 数据库->你的数据库->表->触发器->右击->新建触发器.
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
临沂比较有名的男装品牌 呼伦贝尔市悦动网络科技有限公司怎么样? 呼伦贝尔中汇实业有限公司怎么样? 呼伦贝尔油玉不绝电子商务有限公司怎么样? 如何避免wps卡顿? 属鼠的男人找对象是属什么,属鼠的人和什么属相合 96年鼠的姻缘在哪年 属相相合年份运势提升 2024属鼠找对象属什么最佳 黑客攻击网站能报案吗 黑客攻击报案有用吗 种植瓜菜的时候产量特别低,都有哪些原因? 为什么小麦种植产量开始降低?原因是什么呢? 某地区农业产量低的因素 开淘宝合伙股东需要什么合同法则 我手机里有几个视频,想拿到学校的电脑里去看,可是怎么操作?我不会。有哪位大侠可以教教我? oppo手机视屏怎么在学校多媒体里播放 如何在线使用手机连接校园内网看视频 我们学校用的是奥威亚的录播系统,我要怎样通过手机观看学校录制好的课堂视频呢? 身份证丢失半个月后才补办有关系吗 租车信用卡免押金是扣额度吗 治咳嗽的冰糖和蜂蜜怎么做 怎么定位ip地址 90年马农历9月的运势,90年属马农历9月24出生最近一个月的运势 欢乐颂第二季经典句子 小学生手抄报有关海洋的手抄报 wegame游戏中不能实时切换 头顶左部有些疼是什么原因? 上海最高的大厦名字与高度、影响…? 如何把自己的qq群内的成员导出来,把他们的QQ号或邮箱导出来都可以。有什么好的方法或推荐的软件? 怎样把QQ群里的成员邮箱导出来,QQ:992024060 SQL SERVER中,在选课表插入一条记录时,如何用触发器在学生表中的学分字段加上相关选修课程的学分? sql 触发器问题 这个是什么牙齿? 求《风雨中 我选择向前》作文600字 宾馆怎么加入美团怎么联系工作人员 我的酒店要开业想加入美团可是找不到业务员怎么办 新手不会,怎么办 新手上班什么都不懂学不会自卑!? 福建庆芸茶业有限公司怎么样? 南昌庆芸茴香堂中医门诊有限公司怎么样? 梦见衣服上捡小白虫么意思我从棉袄上捡小白虫共4个 CAD图纸打开后显示出dwg图纸然后在图中画直线,但不显示直线这是为什么? 哈士奇一天吃多少狗粮,幼犬期为体重的6%成犬期则为4% 哈士奇一天要吃几顿?大概什么时候喂食? 哈士奇一天需要吃多少狗粮?是无规律可言还是有迹可循呢? 哈士奇每天吃几歺好 突发胃病疼痛难忍,有什么小技巧可以缓解胃痛 突发胃痛怎么快速缓解 突然胃痛怎么快速缓解 长安在哪个省哪个市 长安在哪里呢