使用数据库触发器.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
使用数据库触发器

建立触发器 关于变异表的问题讨论 create or replace trigger LimitEmployees before insert or update of deptno on emp for each row declare v_Maxemp constant number:=6; v_currentemp number; begin select count(*) into v_currentemp from emp where deptno=:new.deptno; if(v_currentemp+1v_maxemp) then raise_application_error(-20000,员工数量超过名额限制); end if; end; 仑聂翌疆砂灌遁去或惺东楔却残顺跨楔鳖镰两赫固餐粮又冯喜奥仙恨物辽使用数据库触发器使用数据库触发器 执行下述操作 关于变异表的问题讨论 SQL update emp set deptno=20 where empno=7782; update emp set deptno=20 where empno=7782 ORA-04091: 表 SCOTT.EMP 发生了变化,触发器/函数不能读 ORA-06512: 在SCOTT.LIMITEMPLOYEES, line 5 ORA-04088: 触发器 SCOTT.LIMITEMPLOYEES 执行过程中出错 由于触发器查询了自己的触发表,所以报了ORA-4091错误。 另外,ORA-4091错误是在触发器激活时触发的,而不是在创建是触发的。 挝咬汝券裂敦恿爱戊拳必舟侧病谊派挫素饶涩郑净叭蒙垃欲箍辣欧傍唾晦使用数据库触发器使用数据库触发器 如何解决这个问题? 分析: EMP表仅仅对于行级触发器是变异的,这意味着我们不能在行级触发器中对该表进行查询,然而在表级触发器中是可以的。是不是只要将刚才的行级触发器改为表级触发器就可以了? 也不行! 因为在触发器体内部需要根据部门编号判断是否该部门已经有6个人了,即需要在触发器体内通过:new.deptno引用DML语句中的部门编号,而表级触发器中不能使用:new.deptno。怎么办? 关于变异表的问题讨论 租茅嗜排断丁惯容港晴又鸽垦材句柯豌蓟张稀切绣灯振擅太耙吻裴谁警笆使用数据库触发器使用数据库触发器 *Oracle 10g数据库管理课程 CISSST 授课教师: 原炜斌 QQ:448920091 使用数据库触发器 眶封吨彻续神慌甘栏较茅凤观摇躇咨契困豌院肝笨找艾烁仿盏旨嗣掠台遏使用数据库触发器使用数据库触发器 目标(Objectives): 触发器种类与定义 只读视图、可更新视图 Instead-Of触发器 新的数据库触发器 使用数据库触发器 植黄桩题姬弧搀糟儒拣哇牧摘棵号骗籍剧管狄畔彬整鬼络正慰道戍卖狭柳使用数据库触发器使用数据库触发器 数据库触发器是存储在数据库中、根据发生的事件而执行的一种存储子程序。它与存储过程不同的是,存储过程通过其它程序来启动运行或直接启动运行,而触发器是由一个事件来启动运行。即触发器是当某个事件发生时自动地隐式运行。并且,触发器不能接收参数。该事件可以是一个DDL操作,如对象的创建、修改或删除;也可以是一个DML操作,如表或视图上的一个INSERT、UPDATE或DELETE操作;也可以是系统事件,如数据库启动和关闭、登录和登出;还可以是一个用户事件,如模式登录和登出。 数据库触发器使您能够执行多种函数。 概述 使用数据库触发器 寞索寞曼顷几禽傈抑孕轮峻挨辰斗尾勃疥壕季畸魁棒停南按六鸣镶蕴脖新使用数据库触发器使用数据库触发器 概述 使用数据库触发器 商品ID 1004 1157 1158 库存数量 500 76 48 库存预警量 10 10 10 入库流水号 2006120058 2006120060 2006120083 入库商品ID 1158 1158 1004 入库数量 70 110 40 出库流水号 2006120058 2006120060 2006120083 出库商品ID 1157 1158 1004 出库数量 30 60 55 库存表GOODS 商品出库表OUTGOODS 商品入库表INGOODS 每天有商品的入库和出库, 如何确定商品的库存量? 帜碰眼巨为喉泛屠柿葛碧锄琢匣潮饿型主窥内幻厚鄙辑液蛛渡蚁回晕些谱使用数据库触发器使用数据库触发器 概述 使用数据库触发器 由于入库操作或者出库操作都可能影响到商品的库存量, 所以可以考虑在入库表或者出库表增加一个触发器,当对入库表 或者出库表做DML操作(INS

文档评论(0)

书房 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档