韩顺平玩转oracle10g实战教程第7讲.ppt_第1页
韩顺平玩转oracle10g实战教程第7讲.ppt_第2页
韩顺平玩转oracle10g实战教程第7讲.ppt_第3页
韩顺平玩转oracle10g实战教程第7讲.ppt_第4页
韩顺平玩转oracle10g实战教程第7讲.ppt_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、,主讲 韩顺平,玩转oracle 10g实战教程,主讲:韩顺平,email:,主讲 韩顺平,玩转oracle 10g实战教程,oracle第7讲-触发器,主讲 韩顺平,玩转oracle 10g实战教程,触发器-引入, 几个问题 请大家考虑一个需求:当一个用户登录到oracle时,在一张表中记录登录到oracle的用户名和登录时间等信息,怎么办? 再一个需求: 禁止用户在星期天对某一张表进行删除操作,怎么办? 再一个需求: 当用户在删除一张表的时候,自动把删除的记录备份到另外一张表中.,主讲 韩顺平,玩转oracle 10g实战教程,触发器解决之道, 解决之道 很多关系数据库中都提供一种技术,可

2、以在用户进行某种操作的时候,自动的进行另外一个操作,我们把这种技术称为触发器技术. 触发器是指存放在数据库中,被隐含执行的存储过程,可以支持dml触发器,还支持基于系统事件(启动数据库,关闭数据库,登陆)和ddl操作建立触发器。,主讲 韩顺平,玩转oracle 10g实战教程,触发器介绍, 介绍 当发生特定事件时,(如修改表,建立对象,登陆到数据库),oracle就会自动的去执行相应的代码. 触发器分类: dml触发器、系统事件触发器、ddl触发器 触发器由触发事件,触发条件,触发操作三个部分构成.,主讲 韩顺平,玩转oracle 10g实战教程,触发器创建语法, 语法介绍 CREATE OR

3、 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) 修改多条数据的时候,提示 多次修改了数据, 行级触发器和语句级触发器的区别 在创建触发器的时候,

4、带不带for each row,主讲 韩顺平,玩转oracle 10g实战教程,触发器dml触发器, 快速入门2,为了禁止工作人员在休息日改变员工信息,开发人员可以建立before 语句触发器,从而实现数据的安全,主讲 韩顺平,玩转oracle 10g实战教程,触发器dml触发器, 使用条件谓词,当触发器中同时包含多个触发事件(insert ,update ,delete)时,为了在触发器代码中 区分具体的触发事件,可以使用三个条件 inserting updating deleting,为了禁止工作人员在休息日改变员工信息,开发人员可以建立before 语句触发器,从而实现数据的安全,在给出

5、提示时,明确提示用户是进 行的insert,update还是delete操作,主讲 韩顺平,玩转oracle 10g实战教程,触发器dml触发器, 使用:old和:new,问题:当触发器被触发时,要使用被插入、更新或删除的记录中的列值,有时要使用操作前、后列的值. :new 修饰符访问操作完成后列的值 :old 修饰符访问操作完成前列的值,案例: 在修改my_emp表 雇员的薪水时,显示雇员工资修改前和修 改后的值 如何确保在修改员工工资不能低于原有工资。,主讲 韩顺平,玩转oracle 10g实战教程,触发器dml触发器, 课堂小练习,编写一个触发器,保证当用户在删除一张表(my_emp2)

6、记录的时候,自动把删除的记录备份到另外一张表(my_emp2_bak)中., 实现精细化控制,编写一个新的触发器,如何控制员工的新工资不能低于原来的工资,同时也不能高出原来工资的20%,使用约束显然无法实现该规则,我们看看,主讲 韩顺平,玩转oracle 10g实战教程,触发器系统触发器, 系统触发器,系统事件是指基于oracle事件(例如logon和startup)所建立的触发器. 通过使用系统事件触发器,提供了跟踪系统或是数据库变化的机制. 下面介绍一些常用的系统事件属性函数,和建立各种事件触发器的方 法在建立系统事件触发器时,我们需要使用事件属性函数,常用的事 件属性函数如下: ora_

7、client_ip_address /返回客户端的ip ora_database_name /返回数据库名 ora_login_user /返回登陆用户名 ora_sysevent /返回触发触发器的系统事件名 ora_des_encrypted_password /返回用户des加密后的密码,主讲 韩顺平,玩转oracle 10g实战教程,触发器系统触发器, 建立登陆和退出触发器,为了记录用户的登陆和退出事件,我们可以建立登陆和退出触发器 为了记录用户名称,时间,ip地址.我们首先建立一张信息表 sqlconn system/manager as sysdba create table lo

8、g_table( username varchar2(20),logon_time date, logoff_time date,address varchar2(20);,我们一起来完成登陆和退出触发器,看看如何编写?,主讲 韩顺平,玩转oracle 10g实战教程,触发器ddl触发器, 介绍,什么是ddl (data definition language) ,说白了就是我们常用的create 、alter和drop这些数据定义语句.,主讲 韩顺平,玩转oracle 10g实战教程,触发器ddl触发器, 创建ddl触发器,请编写一个触发器,可以记录某个用户进行的ddl操作 为了记录系统所发生的ddl事件, 应该建立一张表(my_ddl_event)用来存放 相关信息 ,注意需要使用system用户登录 conn system/manager as sysdba,my_del_event表,创建该触发器 tr_ddl 测试触发器是否ok,主讲 韩顺平,玩转oracle 10g实战教程,触发器管理触发器, 禁止触发器 是指让触发器临时失效 alter trigger 触发器名 disable;, 激活触发器 alter trigger 触发器名

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论