实验8   综合实验

实验名称               实验8   综合实验                日期   2020 6 19    

一、实验目的:

(1)理解触发器的用途、类型和工作原理

(2)掌握利用T-SL语句创建和维护触发器的方法

(3)掌握利用企业管理器创建、维护触发器的方法

二、实验环境:

    PC + Windows + SQL Server

三、实验内容

创建 after/触发器

(1)创建一个在插入时触发的触发器sc_insert,当向sc表插入数据时,须确保插入的学号己在 Student表中存在,并且还须确保插入的课程号在 Course表中存在:若不存在,则给出相应的提示信息,并取消插入操作,提示信息要求指明插入信息是学号不满足条件还是课程号不满足条件(注: Student表与sc表的外键约束要先取消)。

if exists(select name from sysobjects where name='sc_insert' and type='tr')

drop trigger sc_insert

go

create trigger sc_insert

on SC

after insert

as

if not exists(select * from Student,inserted where Student.Sno=inserted.Sno)

    begin

         print '插入信息的学号不在学生表中!'

         if not exists(select * from Course,inserted where Course.Cno=inserted.Cno)

             print '插入新的课程号不在课程表中!'

             rollback

    end

else

    begin

         if not exists(select * from Course,inserted where Course.Cno=inserted.Cno)

         begin

             print '插入信息的课程号不在课程表中!'

             rollback

         end

    end

(2)为Course表创建一个触发器Course_del,当删除了Course表中的一条课程信息时,同时将表sc表中相应的学生选课记录删除掉。

if exists(select name from sysobjects where name='Course_del' and type='tr')

drop trigger Course_del

go



create trigger Course_del

on Course

after delete

as

if exists(select * from SC,deleted where SC.Cno=deleted.Cno)

begin

    delete from SC

    where SC.Cno in(select Cno from deleted)

end

 

(3)在Course表中添加一个平均成绩avg_Grade字段(记录每门课程的平均成绩),创建一个触发器 Grade_modify,当SC表中的某学生的成绩发生变化时,则Course表中的平均成绩也能及时相应的发生改变。

alter table Course

add avg_Grade smallint;

update Course

set avg_Grade=(select avg(Grade) from SC where SC.Cno=Course.Cno)



if exists(select name from sysobjects where name='Grade_modify' and type='tr')

drop trigger Grade_modify

go



create trigger Grade_modify

on SC

after update

as

if update(Grade)

begin

    update Course

    set avg_Grade=(select avg(Grade) from SC where Course.Cno=SC.Cno group by Cno)

    end

    (4)测试以上3个触发器

sc_insert

 

Course_del

Grade_modify

 

四、心得体会(150字以上)

通过此次实验,理解了触发器的用途、类型和工作原理,掌握了如何利用T-SL语句创建和维护触发器的方法,掌握了利用企业管理器创建、维护触发器的方法。

触发器是用户定义在关系表上的一类由事件驱动的特殊过程,也是一种保证数据完整性的方法。触发器实际上是一类特殊的存储过程,其特殊性表现在一旦定义,无须用户调用,任何对表的修改操作均由服务器自动激活相应的触发器。触发器的主要作用是实现主键和外键不能保证的复杂的参照完整性和数据一致性。

  • 2
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值