1 / 13
文档名称:

实验12 触发器.doc

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

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

分享

预览

实验12 触发器.doc

上传人:mh900965 2018/11/14 文件大小:174 KB

下载得到文件列表

实验12 触发器.doc

相关文档

文档介绍

文档介绍:姓名:

学号:

专业:

班级:

同组人:

实验日期:
2010-05-13
【实验目的与要求】
理解什么是触发器
掌握触发器的设计与使用
【实验内容与步骤】
相关说明:本实验中前面实验创建的触发器可能对后面的实验产生干扰,若出现这种情况,请把前面触发器删除,再完成后面实验。建议每完成一个实验题后,即将该题相关的触发器删除,以免对后面实验产生干扰。
触发器创建与删除语法

触发器是一种在发生数据库事件时自动运行的PL/SQL
语法如下:
CREATE [OR REPLACE] TIGGER触发器名触发时间触发事件
ON表名
[FOR EACH ROW]
BEGIN
pl/sql语句
END

DROP TRIGGER trigger_name
触发器基础
以下程序展示的是触发器的基本使用方法,请阅读并理解以下程序代码,给出运行结果。

--drop table employees;
create table employees(
id number(5),
name varchar2(30),
salary number(8,2),
job_id varchar2(20)
);

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;
/

(1)--测试语句
insert into employees values (1,'a',2222,'aaaaa');
给出测试结果截图:

(2)将系统时间修改为周六,再Insert一条记录,给出并比较两次运行的结果。
给出测试结果截图:
insert into employees values (2,'b',3333,'bbbbb);
使用触发器监控数据更新操作
阅读以下程序,理解程序功能,给出运行测试结果。

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;
/

分别运行以下测试语句,给出运行结果。并理解为什么会有这样的结果。
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
阅读并理解以下程序,理解其功能,给出运行测试结果。

--在inse