数据库原理触发器中的题

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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-----再次观察结果

相关文档
最新文档