《数据库与信息系统》SQL语言_7触发器.pptxVIP

  • 1
  • 0
  • 约1.13千字
  • 约 11页
  • 2021-11-20 发布于上海
  • 举报

《数据库与信息系统》SQL语言_7触发器.pptx

SQL与可编程对象 触发器 为什么需要触发器? 触发器一般用来监视数据库,以便及时进行一些数据维护工作。 例如: 实现比数据完整性约束更为复杂的其他限制; 级联修改数据库中相关的表数据; 及时取消不合适的更新操作,防止恶意或错误地使用数据库。 例子:当某个学生选了某一门课程之后,需要对数据库中的数据进行以下修改: 选课表中插入一条记录 将选择该课程的选课人数增加1 选课人数的更新能不能自动完成呢? 数据库中的部分关系模式: 学生(学号,姓名,…) 选课(学号,课程号,成绩) 课程(课程号,课程名,选课人数,…) 触发器的定义 触发器是一种特殊的存储过程。当对数据库进行更新操作时被触发自动执行。 不需要显式调用! 设置触发器需要指明以下两方面内容: 什么条件下触发? 触发后执行时的动作 触发器的分类 建在表上,执行更新数据操作时触发。视图和临时表都不支持触发器。 按触发时刻分两类: Insert Update Delete 触发器 AFTER触发器: 在表中数据修改之后触发,默认类型。 BEFORE触发器:在表中数据修改以前触发。 使用 SQL语句创建触发器 CREATE TRIGGER tri_courseenroll AFTER INSERT ON courseenroll FOR EACH ROW UPDATE course SET StudentNum = StudentNum +1 WHERE CourseCode=new.CourseCode; 例如:在courseenroll表上建立触发器,当添加新的选课记录时,自动修改course表中的选课人数。 例子:当某个学生选了某一门课程之后 选课表中插入一条记录 将选择该课程的选课人数增加1 触发器的临时表:old 表和 new 表 触发器工作时自动创建和管理的两个临时表,用于记录数据变动情况。 更新操作 new表 old表 Insert 存新增的记录 ---- Delete ---- 存被删的记录 Update 存修改后的记录 存修改前的记录 某列的值用“new.列名”和“old.列名”表示 使用图形工具创建触发器 例如:在student表上创建一个触发器tri_deletestudent,当删除一条学生记录时,将该学生在courseenroll表中的选课记录全部删除。 触发器名称 触发时间 触发事件 执行的动作 维护触发器 修改名称 触发时间 触发事件 执行动作( SQL代码) 触发器的定义 触发器是一种特殊的存储过程。当对数据库进行更新操作时被触发自动执行。 不需要显式调用! 设置触发器需要指明以下两方面内容: 什么条件下执行触发器? 触发器执行时的动作 THANK YOU!

文档评论(0)

1亿VIP精品文档

相关文档