文档详情

Oracle数据库完整性.ppt

发布:2017-06-16约8.35千字共38页下载文档
文本预览下载声明
空间数据库 李伟涛 liweitao_801225@126.com 触发器 触发器(Triggers)是当特定事件出现的时候,自动执行或者激活的代码块。ORACLE会在事件请求触发器的时候,控制适当触发器的执行。 触发器可以用于加强ORACLE的默认功能,进而提供高度可定制的数据库。触发器能够执行的功能有: 允许/限制对表的修改 自动生成派生列 强制数据一致性 提供审计和日志记录 防止无效的事务处理 启用复杂的业务逻辑 触发器示例 SQLcreate trigger biufer_employees_department_id before insert or update of department_id on employees referencing old as old_value new as new_value for each row when (:new_value.department_id80) begin :new_mission_pct:=0; End; / 触发器示例结果 SQLinsert into employees( employee_id,last_name,first_name,hire_date,job_id, email,department_id,salary,commission_pct) values( 12345,’Beck’,’Christopher’,’20-MAY-1995’,’TECH’, ‘clbeck@’,60,10000,0.25); 1 row created. SQLselect commission_pct from employees where employee_id=12345; COMMISSION_PCT --------------------------- 0 触发器的组成部分 触发器名称,以下是命名惯例: BIUFER—代表各行的插入或者更新之前(before insert or update for each row)。这可以告诉触发器的种类如何,它什么时候激活。 EMPLOYEES—告诉触发器放置于哪个表上。 DEPARTMENT_ID—指出触发器会涉及哪个列的值。 触发器的组成部分 触发语句(triggering statement)是那些可以导致ORACLE执行触发器的事件。这个事件可以为如下内容的一种或者多种: 表和一些视图上的DML语句 模式对象上的数据定义语言语句 数据库的启动和关闭 系统错误 各种系统活动 触发器的组成部分 触发器限制(when引导,但不是强制要求的) 触发操作:是触发器的主体。ORACLE会在发生如下两件事情的时候执行这个代码块 使用了适当的语句 如果提供了触发器限制,评估为真 触发器的类型 ORACLE具有不同类型的触发器,可以让开发者实现不同的任务,类型包括: 语句触发器 行触发器 INSTEAD OF 触发器 系统事件触发器 用户事件触发器 语句触发器 语句触发器是在表上或者某些情况下的视图上执行的特定语句或者语句组上的触发器。语句触发器能够与INSERT、UPDATE或者DELETE语句,或者这些语句的任何组合进行关联 语句触发器 例1: SQLcreate table foo(a number); SQLcreate trigger biud_foo before insert or update or delete on foo begin if user not in(‘CLBECK’,’SDILLON’) then raise_application_error(-20001, ‘You do not have access to modify this table.’); end if; end; / 语句触发器 例2:建立一个对修改表的时间进行日志记录的触发器 SQLcreate table employees_log( who varchar2(30), when date); SQLcreate trigger aiud_employees after insert or update or delete
显示全部
相似文档