实验六mysql的触发器实验报告_实验6 触发器与作业.doc

实验6  触发器与作业

姓名:学号:专业:网络工程班级:同组人:无实验日期:2013/11/28

【实验目的与要求】

理解什么是触发器

掌握触发器的设计与使用

掌握在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');

给出测试结果截图:

(2)将系统时间修改为周六,再Insert一条记录,给出并比较两次运行的结果。

给出测试结果截图:

使用触发器监控数据更新操作

阅读以下程序,理解程序功能,给出运行测试结果。

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.

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值