一、实验目的

1.巩固触发器和常用的SQL语句(insert、update、delete,select)

2.理解触发器临时表inserted和deleted

3. 掌握after触发器和instead of 触发器的区别

二、实验内容

1)创建一个after触发器,当表中数据有变化时,输出提示信息

2)创建一个instead of 触发器,提示表中数据不能修改

3)创建触发器:当在Student表中增加学生时

要求stucou表中的选课记录也发生相应的变化

(自动为学生添加三门必修课——自己指定,scorenull

(4)创建触发器:当向stucou表插入数据时,对score进行判断,要求score0100之间,或者为null. 

三、实验步骤

1)创建一个after触发器,当表中数据有变化时,输出提示信息

create trigger tri_after

on Class

after insert,delete,update

as

print'数据change.......'

insert Class values('20000025','02','网构')

103104745.png

2)创建一个instead of 触发器,提示表中数据不能修改

createtriggertri_instead

onClass

insteadofinsert,delete,update

as

print'数据不能change.......'

 

deletefromClasswhereClassNO='20000025'

updateClasssetClassName='10网构'

whereClassNo='20000025'

103159848.png

3)创建触发器:当在Student表中增加学生时

要求stucou表中的选课记录也发生相应的变化(自动为学生添加三门必修课——自己指定,scorenull

createtriggerstu_tri

onStudent

forinsert,update

as

declare@stunochar (8)

updateStuCou

set@stuno=(selectStunofrominserted)

insertStuCou(StuNo,CouNo)

values(@stuno,'001'),(@stuno,'010'),(@stuno,'018')

   

insertstudent

values ('00000100','20000002','qcl','xiao')

insertstudent

values ('00000101','20000001','cailong','chen')

insertstudent

values ('00000102','20000003','丘财龙','QCLPWD')

 

select*fromStudent

whereStuNo='00000100'orStuNo='00000101'orStuNo='00000102'

   

select*fromStuCou

whereStuNo='00000100'orStuNo='00000101'orStuNo='00000102'

103345687.png

(4)创建触发器:当向stucou表插入数据时,对score进行判断,要求score0100之间,或者为null. 

createtriggerscore_tri

onstucou

forinsert

as

declare@scoreint

select@score=scorefrominserted

if@scoreisnotnull

begin

if (@score<=or@score>=100  )

begin

rollback

raiserror('score值必须在到之间!',0,100)

end

end

go

 

insertStuCou(stuno,couno,score)values('00000100','001','60')

insertStuCou(stuno,couno,score)values('00000101','010','55')

insertStuCou(stuno,couno,score)values('00000102','018','90')

 

select*fromStuCou

whereStuNo='00000100'orStuNo='00000101'orStuNo='00000102'

103502636.png

验证

103554211.png

 

四、实验总结(结果分析和体会)

 

 

对于触发器的知识比较薄弱,需多加练习