实验十一、触发器
百度文库一、实验目的1.理解触发器的概念与类型。2.掌握创建、修改和删除触发器的方法。3.掌握使用触发器维护数据完整性的方法。二、实验内容1.创建一个名为“trig_1 ”的触发器,当向学生表添加记录时,该触发器自动显示学生表的所有信息。程序:create trigger trig_1on studentfor insertasselect *from student举例:添加一行记录insert into student(sno,sname,sex,birthday,class,scode)values('0601028',' 哈哈 ',' 男 ','19920117','95001','01110')结果:添加了一条“哈哈”的记录后,自动显示所有记录。1百度文库2.创建一个名为“ trig_2 ”的触发器,当向学生表添加、修改或删除记录时,该触发器自动显示如下信息: “对不起,你无权进行更新操作! ”程序:create trigger trig_2on studentinstead of insert,update,deleteasprint' 对不起,你无权执行该操作1'举例:删除一条记录delete from studentwhere sname=' 哈哈 '结果:3.修改“ trig_2 ”的触发器,当向学生表修改记录时,该触发器自动显示修改前和修改后的记录。程序:alter trigger trig_2on studentfor updateasSelect *FromDeleted- 修改前的数据Select *FromInserted- 修改后的数据举例:update studentset sname=' 嘻嘻 ',birthday='19930101'where sno='0601028'结果:修改名为“哈哈”的两条记录,上表为修改前的,下表为修改后的。4.创建一个名为“trig_3 ”的触发器,当向学生表删除记录时,该触发器自动删除和表中与之相关的所有记录。程序:create trigger trig_3on studentfor deleteas2百度文库deletefrom scorewhere sno in(select snofrom deleted)举例:删除赵亦delete from studentwhere sname=' 赵亦 '结果:两表中均无学号为0601001 名叫赵亦的相关记录.5.创建一个名叫“trig_4 ”的触发器,当向成绩表添加记录时,该触发器自动显示与该记录相关的学生学号、姓名和班级。程序:create trigger trig_4on scorefor insertasselect sno,sname,classfrom studentwhere sno=(select snofrom inserted)举例:添加王芳的记录cno=3 的成绩为99。insert into score(sno,cno,degree)values('0601002','3','99')3