第五章-数据库完整性.pptVIP

  • 29
  • 0
  • 约2.05万字
  • 约 84页
  • 2019-05-19 发布于江苏
  • 举报
An Introduction to Database System 定义触发器(续) 当对表SC的Grade属性进行修改时,若分数增加了10%则将此次操作记录 到另一个表SC_U中,假设SC_U表有四个属性Sno、Cno、Oldgrade、 Newgrade,其中Oldgrade是修改前的分数,Newgrade是修改后的分数。 CREATE TRIGGER SC_Tri AFTER UPDATE OF Grade ON SC WHEN (New.Grade = 1.1 * Old.Grade) FOR EACH ROW INSERT INTO SC_U (Sno, Cno, OldGrade, NewGrade) VALUES(Old.Sno ,Old.Cno, Old.Grade, New.Grade) An Introduction to Database System 定义触发器(续) [例19]当教师表Teacher的工资发生变化后就自动在工资变化表 Sal_log中增加一条相应记录 CREATE TABLE Sal_log /* 首先建立工资变化表Sal_log*/ (Eno NUMERIC(4) referenceteacher(Eno), Sal NUMERIC(7,2), Username char(10), Date TIMESTAMP ); CREATE TRIGGER Insert_Sal /* 建立一个AFTER行级触发器*/ AFTER INSERT ON Teacher /*触发事件是INSERT*/ FOR EACH ROW AS BEGIN INSERT INTO Sal_log VALUES ( New.Eno, New.Sal,CURRENT_USER,CURRENT_TIMESTAMP); END; An Introduction to Database System 定义触发器(续) CREATE TRIGGER Update_Sal /* 建立一个AFTER行级触发器*/ AFTER UPDATE ON Teacher /*触发事件是UPDATE */ FOR EACH ROW AS BEGIN IF (new.Sal old.Sal) THEN INSERT INTO Sal_log VALUES ( new.Eno,new.Sal,CURRENT_USER,CURRENT_TIMESTAMP); END IF; END; An Introduction to Database System 定义触发器(续) 触发器与 前面介绍的各种完整性限制的不同 完整性限制是当被限制的对象发生变化时,系统就去检查该对象变 化后能否满足限制条件,如果不能满足,就拒绝引起这种变化的操 作。 触发器是当特定的系统事件(对一个表的增、删、改,事务的结 束)发生时,对规则的条件进行检查,如果条件成立则执行规则中 的动作,否则不执行该动作。 触发事件的操作可能执行也可能不执行。 An Introduction to Database System 5.6 触发器 5.6.1 定义触发器 5.6.2 激活触发器 5.6.3 删除触发器 An Introduction to Database System 5.6.2 激活触发器 触发器的执行,是由触发事件激活的,并由数据库服务器自动执行 同一个表上的多个触发器激活时遵循如下的执行顺序: (1) 执行该表上的BEFORE触发器; (2) 激活触发器的SQL语句; (3) 执行该表上的AFTER触发器。 对于同一个表上的多个BEFORE(AFTER)触发器 有些RDBMS遵循“谁先创建谁先执行”的原则,即按照触发器创建的时间先后顺序执行 有些RDBMS按照触发器名称的字母排序顺序执行触发器 An Introduction to Database System 5.6 触发器 5.6.1 定义触发器 5.6.2 激活触发器 5.6.3 删除触发器 An Introduction to Database System 5.6.3 删除触发器 删除触发器的SQL语法: DROP TRIGGER 触发器名 ON 表名; 触发器必须是一个已经创建的触发器

文档评论(0)

1亿VIP精品文档

相关文档