数据库实验六-触发器

实验内容

将实验四的数据库按书中79页中的表对其填充数据,然后在数据库中做如下操作:

(1)查询学号为201215121的姓名和所选修的课程门数,当门数为2门及以上时,则输出“XX,已经完成了选课”,否则输出“XX,还需选课”。(提示:需定义变量存储选修的课程门数和学生姓名)

(2)在数据库中查找姓名为“张立”的学生,若找到,输出该学生的学号,姓名,年龄,院系,否则,输出“查无此人”的信息。(提示:用if exists)

(3)在Student表上创建一个触发器,每次有插入操作时,都设置变量@str的值为"Trigger is working",并输出显示出来。

(4)按课本P166页的方式创建TEACHER表(在此之前需创建DEPT表)。并在此教师表中定义一个AFTER触发器,为教师表Teacher定义完整性规则“教授的工资不得低于4000元,如果低于4000元,自动改为4000元”。并进行触发器的验证。

(5)首先解除Student表和SC表的参照关系。然后在Student表上创建一个触发器,使更新一个学生的学号信息时能够级联的更新此学生在SC表中的选课记录的学号信息,并进行验证。

(6)首先解除Student表和SC表的参照关系。然后在Student表上创建一个触发器,使删除一个学生时能够级联的删除此学生在SC表中的选课记录,并进行验证。


实验过程、存在的问题及解决办法:

(1)查询学号为201215121的姓名和所选修的课程门数,当门数为2门及以上时,则输出“XX,已经完成了选课”,否则输出“XX,还需选课”。(提示:需定义变量存储选修的课程门数和学生姓名)

数据库实验六-触发器_第1张图片

(2)在数据库中查找姓名为“张立”的学生,若找到,输出该学生的学号,姓名,年龄,院系,否则,输出“查无此人”的信息。(提示:用if exists)

数据库实验六-触发器_第2张图片

(3)在Student表上创建一个触发器,每次有插入操作时,都设置变量@str的值为"Trigger is working",并输出显示出来。

     1.创建触发器

数据库实验六-触发器_第3张图片

 2.输入数据验证

数据库实验六-触发器_第4张图片

4)按课本P166页的方式创建TEACHER表(在此之前需创建DEPT表)。并在此教师表中定义一个AFTER触发器,为教师表Teacher定义完整性规则“教授的工资不得低于4000元,如果低于4000元,自动改为4000元”。并进行触发器的验证。

   1.创建Dept

数据库实验六-触发器_第5张图片

 2.创建Teacher

数据库实验六-触发器_第6张图片

3.创建触发器TEACHER_SAL_TRIGGER

数据库实验六-触发器_第7张图片

4.验证测试

     插入数据

数据库实验六-触发器_第8张图片

查询触发器是否被触发(查询TEACHER表显示修改成功)

数据库实验六-触发器_第9张图片

(5)首先解除Student表和SC表的参照关系。然后在Student表上创建一个触发器,使更新一个学生的学号信息时能够级联的更新此学生在SC表中的选课记录的学号信息,并进行验证。(删除外键约束过程省略

创建触发器

数据库实验六-触发器_第10张图片

验证触发器

先查看SC表中‘***’‘201215126’的选修情况

数据库实验六-触发器_第11张图片

更新***的学号,查看是否触发了触发器更新SC表中学号

数据库实验六-触发器_第12张图片

查看sc表中sno列是否被修改(已修改成功)

数据库实验六-触发器_第13张图片

(6)首先解除Student表和SC表的参照关系。然后在Student表上创建一个触发器,使删除一个学生时能够级联的删除此学生在SC表中的选课记录,并进行验证。

    创建触发器

数据库实验六-触发器_第14张图片

验证删除 05170052’时是否级联删除了其选修记录

数据库实验六-触发器_第15张图片

Select命令显示已级联删除其选修记录

数据库实验六-触发器_第16张图片

你可能感兴趣的:(SQL,数据库)