文档详情

使用数据库触发器.ppt

发布:2025-03-25约7.65千字共10页下载文档
文本预览下载声明

Oracle10g数据库管理课程logo关于变异表的问题讨论问题:在EMP表中,每个部门的员工名额限制在6个。需要通过对EMP表进行INSERT操作或者UPDATE操作来实现。Oracle10g数据库管理课程建立触发器关于变异表的问题讨论createorreplacetriggerLimitEmployees

beforeinsertorupdateofdeptnoonemp

foreachrow

declare

v_Maxempconstantnumber:=6;

v_currentempnumber;

begin

selectcount(*)intov_currentemp

fromempwheredeptno=:new.deptno;

if(v_currentemp+1v_maxemp)then

raise_application_error(-20000,员工数量超过名额限制);

endif;

end;Oracle10g数据库管理课程执行下述操作关于变异表的问题讨论SQLupdateempsetdeptno=20whereempno=7782;updateempsetdeptno=20whereempno=7782ORA-04091:表SCOTT.EMP发生了变化,触发器/函数不能读ORA-06512:在SCOTT.LIMITEMPLOYEES,line5ORA-04088:触发器SCOTT.LIMITEMPLOYEES执行过程中出错由于触发器查询了自己的触发表,所以报了ORA-4091错误。另外,ORA-4091错误是在触发器激活时触发的,而不是在创建是触发的。CISSSTCISSSTOracle10g数据库管理课程授课教师:原炜斌QQ:448920091使用数据库触发器Oracle10g数据库管理课程使用数据库触发器目标(Objectives):触发器种类与定义只读视图、可更新视图Instead-Of触发器新的数据库触发器Oracle10g数据库管理课程数据库触发器是存储在数据库中、根据发生的事件而执行的一种存储子程序。它与存储过程不同的是,存储过程通过其它程序来启动运行或直接启动运行,而触发器是由一个事件来启动运行。即触发器是当某个事件发生时自动地隐式运行。并且,触发器不能接收参数。该事件可以是一个DDL操作,如对象的创建、修改或删除;也可以是一个DML操作,如表或视图上的一个INSERT、UPDATE或DELETE操作;也可以是系统事件,如数据库启动和关闭、登录和登出;还可以是一个用户事件,如模式登录和登出。数据库触发器使您能够执行多种函数。概述使用数据库触发器Oracle10g数据库管理课程概述使用数据库触发器商品ID库存数量库存预警量1004500101157761011584810入库流水号入库商品ID入库数量2006120058115870200612006011581102006120083100440出库流水号出库商品ID出库数量200612005811573020061200601158602006120083100455库存表GOODS商品出库表OUTGOODS商品入库表INGOODS每天有商品的入库和出库,如何确定商品的库存量?Oracle10g数据库管理课程概述使用数据库触发器由于入库操作或者出库操作都可能影响到商品的库存量,所以可以考虑在入库表或者出库表增加一个触发器,当对入库表或者出库表做DML操作(INSERT、UPDATE、DELETE)操作时,都会激活入库表或者出库表上的触发器,进而通过触发器中的逻辑修改库存表中的库存量。要完整实现这一过程,需要理解两个概念:1、数据库中的事务处理2、JAVAJDBC调用过程Oracle10g数据库管理课程最常见的数据库触发器用法是:为DDL和DML操作进行审计为强制执行复杂验证规则,防止错误的或不一致的数据输入到数据

库中。当特定行为发生时,执行与其相关的行为。强制执行复杂的数据完整性关系。在某些情况下,如父记录更新以

后子记录上要执行级联更新操作等。如果不使用数据库触发器,将

无法公开的指定这种完整新的约束关系。自动生成派生值。处理系统事件。概述使用数据库触发器Oracle

显示全部
相似文档