韩顺平玩转oracle10g实战教程第7讲.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
韩顺平玩转oracle10g实战教程第7讲

* * 主讲 韩顺平 玩转oracle 10g实战教程 主讲:韩顺平 email:hanshunping@tsinghua.org.cn 主讲 韩顺平 玩转oracle 10g实战教程 oracle第7讲-触发器 主讲 韩顺平 玩转oracle 10g实战教程 触发器-引入 ■ 几个问题 请大家考虑一个需求:当一个用户登录到oracle时,在一张表中记录登录到oracle的用户名和登录时间等信息,怎么办? 再一个需求: 禁止用户在星期天对某一张表进行删除操作,怎么办? 再一个需求: 当用户在删除一张表的时候,自动把删除的记录备份到另外一张表中…. 主讲 韩顺平 玩转oracle 10g实战教程 触发器—解决之道 ■ 解决之道 很多关系数据库中都提供一种技术,可以在用户进行某种操作的时候,自动的进行另外一个操作,我们把这种技术称为触发器技术. 触发器是指存放在数据库中,被隐含执行的存储过程,可以支持dml触发器,还支持基于系统事件(启动数据库,关闭数据库,登陆)和ddl操作建立触发器。 主讲 韩顺平 玩转oracle 10g实战教程 触发器—介绍 ■ 介绍 当发生特定事件时,(如修改表,建立对象,登陆到数据库),oracle就会自动的去执行相应的代码. 触发器分类: dml触发器、系统事件触发器、ddl触发器 触发器由触发事件,触发条件,触发操作三个部分构成. 主讲 韩顺平 玩转oracle 10g实战教程 触发器—创建语法 ■ 语法介绍 CREATE [OR REPLACE] TRIGGER trigger_name {BEFORE | AFTER } {INSERT | DELETE | UPDATE [OF column [, column …]]} ON [schema.] table_name [FOR EACH ROW ] [WHEN condition] BEGIN trigger_body; END; 主讲 韩顺平 玩转oracle 10g实战教程 触发器—dml触发器 ■ 快速入门1 在某张表(my_emp) 添加一条数据的时候,提示 ‘添加了一条数据’ 在某张表(my_emp) 修改多条数据的时候,提示 多次‘修改了数据’ ■ 行级触发器和语句级触发器的区别 在创建触发器的时候,带不带for each row 主讲 韩顺平 玩转oracle 10g实战教程 触发器—dml触发器 ■ 快速入门2 为了禁止工作人员在休息日改变员工信息,开发人员可以建立before 语句触发器,从而实现数据的安全 主讲 韩顺平 玩转oracle 10g实战教程 触发器—dml触发器 ■ 使用条件谓词 当触发器中同时包含多个触发事件(insert ,update ,delete)时,为了在触发器代码中 区分具体的触发事件,可以使用三个条件 inserting updating deleting 为了禁止工作人员在休息日改变员工信息,开发人员可以建立before 语句触发器,从而实现数据的安全,在给出提示时,明确提示用户是进 行的insert,update还是delete操作 主讲 韩顺平 玩转oracle 10g实战教程 触发器—dml触发器 ■ 使用:old和:new 问题:当触发器被触发时,要使用被插入、更新或删除的记录中的列值,有时要使用操作前、后列的值. :new 修饰符访问操作完成后列的值 :old 修饰符访问操作完成前列的值 NULL 有效 有效 NEW 有效 有效 NULL OLD DELETE UPDATE INSERT 特性 案例: ①在修改my_emp表 雇员的薪水时,显示雇员工资修改前和修 改后的值 ②如何确保在修改员工工资不能低于原有工资。 主讲 韩顺平 玩转oracle 10g实战教程 触发器—dml触发器 ■ 课堂小练习 编写一个触发器,保证当用户在删除一张表(my_emp2)记录的时候,自动把删除的记录备份到另外一张表(my_emp2_bak)中…. name id ■ 实现精细化控制 编写一个新的触发器,如何控制员工的新工资不能低于原来的工资,同时也不能高出原来工资的20%,使用约束显然无法实现该规则,我们看看 主讲 韩顺平 玩转oracle 10g实战教程 触发器—系统触发器 ■ 系统触发器 系统事件是指基于oracle事件(例如logon和startup)所建立的触发器. 通过使用系统事件触发器,提供了跟踪系统或是数据库变化的机制. 下面介绍一些常用的系统事件属性函数,和建立各种事件触发器的方 法在建立系统事件触发器时,我们需要使用事件属性函数,常用的事 件属性函数如下: ora_client_ip_address //返回客户端的ip ora_database_name //返

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档