当前位置:文档之家› 数据库实验报告(7)-触发器

数据库实验报告(7)-触发器

桂林航天工业学院学生实验报告
实验七
实验名称触发器实验日期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'。

相关主题