录制使用的文件第22部分oracle11触发器_第1页
录制使用的文件第22部分oracle11触发器_第2页
录制使用的文件第22部分oracle11触发器_第3页
录制使用的文件第22部分oracle11触发器_第4页
录制使用的文件第22部分oracle11触发器_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

1、第二十二部分 oracle11g的触发器 王二暖王二暖 Oracle11g 教室教室 TelQQ:19727663 目标q理解oracle11g中的触发器的种类q掌握oracle11g中使用触发器实现复杂完整性的方法q理解SqlServer和oracle11g的触发器语法上的差异q掌握oracle11g中的INSTEAD OF触发器的建立方法q掌握oracle11g中的特殊类型触发器的建立方法,即:模式触发器、数据库启动关闭触发器、用户登录退出触发器 王二暖王二暖 Oracle11g 教室教室 TelQQ:19727663 触发器q触发器是当

2、特定事件出现时自动执行的存储过程q特定事件可以是执行更新的DML语句和DDL语句q触发器不能被显式调用q触发器的功能:q自动生成数据q自定义复杂的安全权限q提供审计和日志记录q启用复杂的业务逻辑 王二暖王二暖 Oracle11g 教室教室 TelQQ:19727663 oracle11g创建触发器的语法CREATE OR REPLACE TRIGGER trigger_nameAFTER | BEFORE | INSTEAD OFINSERT OR UPDATE OF column_list OR DELETEON table_or_view_nameREFERENC

3、ING OLD AS old / NEW AS newFOR EACH ROWWHEN (condition)pl/sql_block; 王二暖王二暖 Oracle11g 教室教室 TelQQ:19727663 触发器的组成部分 3-1触发器由三部分组成:触发器语句(事件)定义激活触发器的 DML 事件和 DDL 事件触发器限制执行触发器的条件,该条件必须为真才能激活触发器触发器操作(主体)包含一些 SQL 语句和代码,它们在发出了触发器语句且触发限制的值为真时运行 王二暖王二暖 Oracle11g 教室教室 TelQQ:19727663 触

4、发器的组成部分 3-2 SQL CREATE OR REPLACE TRIGGER trig_salAFTER UPDATE OF empsal ON salary_records触发器语句为 salary_records 表创建 trig-sal 触发器在更新 emp_sal 列之后激活触发器触发器限制SQL FOR EACH ROWWHEN (NEW.empsalOLD.empsal)DECLARESal_diff NUMBER;只有在WHEN子句中的条件得到满足时,才激活trig_sal 触发器触发器操作SQL BEGIN sal_diff:=:NEW.empsal-:OLD.empsa

5、l; DBMS_OUTPUT.PUT_LINE(工资差额:sal_diff);END;如果WHEN子句中的条件得到满足,将执行BEGIN 块中的代码 王二暖王二暖 Oracle11g 教室教室 TelQQ:19727663 AFTER和BEFORE触发器Oracle 数据库更新表表保存更新激活触发器触发器AFTER 触发器的工作原理BEFORE 触发器的工作原理更新表表激活触发器触发器保存更新Oracle 数据库 王二暖王二暖 Oracle11g 教室教室 TelQQ:19727663 创建触发器CREATE OR REPLACE TRIGG

6、ER aiu_itemfileAFTER INSERTON itemfileFOR EACH ROWBEGIN IF (:NEW.qty_hand = 0) THEN DBMS_OUTPUT.PUT_LINE(警告:已插入记录,但数量为零); ELSE DBMS_OUTPUT.PUT_LINE(已插入记录); END IF;END;/ 王二暖王二暖 Oracle11g 教室教室 TelQQ:19727663 Oracle11g的触发器类型1q触发器的类型有:触发器类型模式(DDL)触发器DML触发器数据库级触发器语句级触发器行级触发器INSTEAD OF触发器 王二暖

7、王二暖 Oracle11g 教室教室 TelQQ:19727663 Oracle11g的触发器类型2q DDL 触发器q 数据库级触发器q DML 触发器q 语句级触发器q 行级触发器q INSTEAD OF 触发器在模式中执行 DDL 语句时执行在发生打开、关闭、登录和退出数据库等系统事件时执行在对表或视图执行DML语句时执行无论受影响的行数是多少,都只执行一次对DML语句修改的每个行执行一次用于用户不能直接使用 DML 语句修改的视图 王二暖王二暖 Oracle11g 教室教室 TelQQ:19727663 Oracle11g的触发器类型

8、3 行级触发器:有for each row语句,在begin代码段中可以使用:new和:old。 王二暖王二暖 Oracle11g 教室教室 TelQQ:19727663 Oracle11g的触发器类型4 语句级触发器:没有有for each row语句,在begin代码段中不可以使用:new和:old。 王二暖王二暖 Oracle11g 教室教室 TelQQ:19727663 Oracle11g的触发器类型5SQL CREATE OR REPLACE TRIGGER upd_ord_view INSTEAD OF UPDATE ON ord

9、_view FOR EACH ROW BEGIN UPDATE order_master SET vencode=:NEW.vencode WHERE orderno = :NEW.orderno;DBMS_OUTPUT.PUT_LINE(已激活触发器); END; /qINSTEAD OF 触发器 王二暖王二暖 Oracle11g 教室教室 TelQQ:19727663 Oracle11g的触发器类型6模式触发器CREATE TABLE dropped_obj (obj_name VARCHAR2(30), obj_type VARCHAR2(20), drop_d

10、ate DATE); CREATE OR REPLACE TRIGGER log_drop_objAFTER DROP ON SCHEMABEGIN INSERT INTO dropped_obj VALUES( ORA_DICT_OBJ_NAME, ORA_DICT_OBJ_TYPE, SYSDATE);END; 王二暖王二暖 Oracle11g 教室教室 TelQQ:19727663 常用系统变量Ora_client_ip_address 返回客户端的ip地址Ora_database_name 返回当前数据库名Ora_login_user 返回登录用户名Ora_d

11、ict_obj_name 返回ddl操作所对应的数据库对象名 Ora_dict_obj_type 返回ddl操作所对应的数据库对象的类型 王二暖王二暖 Oracle11g 教室教室 TelQQ:19727663 Oracle11g的触发器类型7数据库启动触发器create table event_table ( event varchar2(30), time date);create or replace trigger tr_startupafter startup on databasebegin insert into event_table values(

12、ora_sysevent, sysdate);end; 王二暖王二暖 Oracle11g 教室教室 TelQQ:19727663 Oracle11g的触发器类型8用户登陆触发器create table log_table(username varchar2(20), logon_time date, logoff_time date, address varchar2(20);create or replace trigger tr_logonafter logon on databasebegin insert into log_table(username,log

13、on_time, address ) values(ora_login_user, sysdate, ora_client_ip_address);end; 王二暖王二暖 Oracle11g 教室教室 TelQQ:19727663 q启用和禁用触发器q删除触发器启用、禁用和删除触发器SQL ALTER TRIGGER aiu_itemfile DISABLE;SQL ALTER TRIGGER aiu_itemfile ENABLE;SQL DROP TRIGGER aiu_itemfile; 王二暖王二暖 Oracle11g 教室教室 TelQQ:19727663 查看有关触发

温馨提示

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

评论

0/150

提交评论