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

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
BEFORE触发器:在表中数据修改以前 触发。
使用 SQL语句创建触发器
触发时间
需要建立触 发器的表
CREATE TRIGGER 触发器名
{BEFORE|AFTER} {INSERT|UPDATE|DELETE}
ON 表名 FOR EACH ROW
SQL语句段;
触发后执行 的语句
触发事件
触发范围: 行级触发

Insert
新 操
Update
作 Delete
不需要显式调用!
设置触发器需要指明以下两方面内容: 1. 什么条件下执行触发器? 2. 触发器执行时的动作
THANK YOU!
级联修改数据库中相关的表数据;
及时取消不合适的更新操作,防止恶意或错误地使
用数据库。
数据库中的部分关系模式: 学生(学号,姓名,…) 选ຫໍສະໝຸດ Baidu(学号,课程号,成绩) 课程(课程号,课程名,选课人数,…)
触发器的定义
触发器是一种特殊的存储过程。当对数据 库进行更新操作时被触发自动执行。

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