1 / 20
文档名称:

实验8 触发器与作业.doc

格式:doc   大小:300KB   页数:20页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

实验8 触发器与作业.doc

上传人:63229029 2017/2/5 文件大小:300 KB

下载得到文件列表

实验8 触发器与作业.doc

相关文档

文档介绍

文档介绍:实验 8 触发器与作业姓名: 学 号: 专业: 软件工程(金融) 班 级: 同组人: 无实验日期: 2013/7/22 【实验目的与要求】?理解什么是触发器?掌握触发器的设计与使用?掌握在 Oracle 中完成定时作务的方法【实验内容与步骤】相关说明: 本实验中前面实验创建的触发器可能对后面的实验产生干扰,若出现这种情况,请把前面触发器删除,再完成后面实验。建议每完成一个实验题后,即将该题相关的触发器删除,以免对后面实验产生干扰。 触发器创建与删除语法 1 .触发器的创建触发器是一种在发生数据库事件时自动运行的 PL/SQL 语法如下: CREATE [OR REPLACE] TIGGER 触发器名触发时间触发事件 ON 表名[FOR EACH ROW] BEGIN pl/sql 语句 END 2 .触发器的删除 DROP TRIGGER trigger_name 触发器基础以下程序展示的是触发器的基本使用方法, 请阅读并理解以下程序代码, 给出运行结果。 1. 创建测试表-- drop table employees; create table employees( id number(5), name varchar2(30), salary number(8,2), job_id varchar2(20) );2. 创建触发器 CREATE OR REPLACE TRIGGER secure_emp_1 -- 这里不能有 IS BEFORE INSERT ON employees -- 这里没有分号 BEGIN IF (TO_CHAR (SYSDATE,'DY') IN (' 星期六',' 星期天') OR (TO_CHAR(SYSDATE,'HH24:MI') NOT BETWEEN '08:00' AND '18:00' )) THEN RAISE_APPLICATION_ERROR(-20500,' 你只能在工作时间对表进行操作'); END IF; END; /3. 测试触发器(1) -- 测试语句 insert into employees values (1,'a',2222,'aaaaa'); 给出测试结果截图: 使用触发器监控数据更新操作阅读以下程序,理解程序功能,给出运行测试结果。 1. 创建触发器 CREATE OR REPLACE TRIGGER secure_emp_2 BEFORE INSERT OR UPDATE OR DELETE ON employees BEGIN -- 如果当前时间是周六或周日或者时间不在 8:00-18:00 之间 IF (TO_CHAR (SYSDATE,'DY') IN(' 星期五',' 星期天') OR (TO_CHAR(SYSDATE,'HH24:MI') NOT BETWEEN '08:00' AND '18:00' )) THEN IF DELETING THEN RAISE_APPLICATION_ERROR (-20502,' 你只能在工作时间删除员工表的数据'); ELSIF INSERTING THEN RAISE_APPLICATION_ERROR (-20500,' 你只能在工作时间插入员工表的数据.'); ELSIF UPDATING ('SALARY') THEN RAISE_APPLICATION_ERROR (-20503,' 你只能在工作时间更新员工表的数据'); ELSE RAISE_APPLICATION_ERROR (-20504,' 你只能在工作事件操作员工表的数据.'); END IF; END IF; END; /2. 运行测试分别运行以下测试语句,给出运行结果。并理解为什么会有这样的结果。 insert into employees values (1,'a',2222,'AD_PRES'); insert into employees values (2,'b',2222,'AD_VP'); 给出测试结果截图: delete from employees; 给出测试结果截图: update employees set salary=3000; 给出测试结果截图: 在 insert 或 update 中使用:new 阅读并理解以下程序,理解其功能,给出运行测试结果。 1. 创建触发器--在 insert 或 update 中使用:new-- CREATE OR REPLACE TRIGGER restrict_salary BEFORE INSERT OR UPDATE OF salary ON employees