单元29:触发器问题引入问题:如果学校要求:每位教师1学期任教科目不得超过2门、任教总课时不得超过300,如何实现该要求
classIDcourseIDteacherIDterm08040020012050400710804002001206040071若要向该表插入如下记录,能否成功
(0804002001,207,04007,1)问题引入完全可以插入,因为1
不存在主键冲突2
不存在外键冲突(假设班级、课程、教师都存在)因此,一般的约束达不到这种限制要求(企业逻辑或企业规则)触发器——可以实现这种强制性业务规则触发器的概念1
创建和应用触发器主要内容修改和删除触发器3
1触发器的概念触发器分为DML(数据操作语言)触发器和DDL(数据定义语言)触发器
DML触发器用于响应数据库数据操作(INSERT、UPDATE、DELETE)事件,建立在数据库对象(表、视图)上
DDL触发器用于响应各种数据定义语言事件(CREATE、ALTER、DROP),建立在服务器或数据库上
触发器必须依赖于某个对象,不允许带参数,也不允许被调用
2DML触发器的原理DML触发器都会创建两个专用临时表:INSERTED表——存放执行INSERT或UPDATE语句而需要向表中插入的记录
DELETED表——存放执行DELETE或UPDATE语句而需要从表中删除的记录
这两个表的结构和触发器作用的表结构完全相同触发器执行完成后,这两个表也会删除触发器的工作原理触发器的工作原理执行INSERT,UPDATE,DELETE生成临时表:Inserted和Deleted该表设置了触发器将数据送入Inserted或Deleted表是否合乎事务处理
执行相关操作,自动删除临时表YN给出提示,执行不成功系统先检查数据的正确性,如果正确才执行触发器的定义代码
2DML触发器的作用(1)多张表的级联修