数据库原理触发器中的题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
触发器中的题
在SC表上插入一条选课记录后,将C表中对应的课程的seleNUM值加1。(注意每一步的含义)
Alter table c add seleNUM int---- 在C表增加一个字段
go
Update c
Set selenum=(select count(sno)from sc where cno=o)------- C表上的SELENUM的值的填入(根据SC表选课的情况)
go
select cno,selenum from c-----查看C表上每门课的选课人数
go
CREATE TRIGGER SELECTCOURSE
ON SC FOR INSERT
AS
IF(SELECT COUNT(*)FROM INSERTED,sc where sc.sno=inserted.sno and o=o)>1 ----如果SC表中某个学生已有这门课的选课记录
BEGIN
PRINT'YOU CAN INSERT ONE RECORD ONCE. SO THE RECORDS ARE NOT INSERTED INTO THE TABLE'
ROLLBACK TRAN
END
ELSE
BEGIN
DECLARE @CNO VARCHAR(10)
SELECT @CNO=CNO FROM INSERTED
If(select seleNum from c where cno=@cno)is null
Begin
Update c set seleNum=0 where cno=@cno
end
UPDATE C
SET seleNUM=selenum+1 WHERE CNO=@CNO-----C表中根据刚插入的选课记录中的课程号,选课人数增加
PRINT'THE NUMBER OF STUDENTS WHO SELECTED'+@CNO +' HAS BEENODDED' END
GO
insert sc
values('200512','c02',80)-----此记录被拒
go
insert sc
values('200912','c02',90)-------次记录成功插入SC
select*from c------查看C表中的记录,看看C02的选课人数是否加
GO
insert c(cno,cname,credit)
values('c05','操作系统',4) )---C表中插入一条记录(原来没有这门课的)
go
select*from c------注意观察C05的选课人数为null go
insert sc
values('200912','c05',90)
go
select*from c-----再次观察结果