数据库实验报告(7)-触发器
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
桂林航天工业学院学生实验报告
实验七
实验名称触发器实验日期2019.11.12
实验目的
1.了解触发器的基本原理,掌握创建触发器的方法。
2.掌握修改和删除触发器的方法,能够设计简单的触发器。
实验内容触发器
实验方法及步骤
1、创建一个触发器InsStud,当向student表插入一条记录时,同时把该记录插入到关系student2。
CREATE TRIGGER InsStud
on student
FOR INSERT
AS
insert into student2
select*from inserted
2、向student表中插入一条记录('201215130','张三','男',20,'CS'),查看student和student2表中记录的变化是什么?
student和student2表中都能插入('201215130','张三','男',20,'CS')这条记录
insert student values('201215130','张三','男',20,'CS');
select*from student
select*from student2
3、创建一个触发器DelStud,当向student表删除一条记录时,同时把该记录从student2表删除掉。
CREATE TRIGGER DelStud
on student
FOR delete
AS
delete student2
select*from deleted
4、删除student表中的sno为201215130的元组,同时查看student2表中元组的变化是什么?
student和student2表中都能删除('201215130','张三','男',20,'CS')这条记录。
delete student where sno='201215130'
select*from student
select*from student2
5、为course表创建一个名为del_rollback_tr的DELETE触发器,该触发器的作用是禁止删除course表中的记录。
CREATE TRIGGER del_rollback_tr
on course
FOR delete
AS
if (exists(select*from deleted))
rollback
insert course values('8','张','5',2);
delete course where cno='8'
6、为student表创建一个名为student_tr 的update、delete触发器,该触发器的作用是当修改或者删除student表中的 sno时,同步修改或者删除sc表中的sno的内容。(前提是sc表的sno的外键规则得删除)
create trigger student_tr
on student
for delete,update
as
if update (sno)
update sc set sno=a.asno from (select inserted.sno
as asno,deleted.sno
as bsno from inserted,deleted)
as a inner join sc
as b on a.bsno=b.sno
修改前
修改后:update student set sno=sno='80'where sno='6666666'