【Oracle数据库】实验-触发器trigger

news/2024/11/28 20:44:56/

触发器和存储过程的区别

  1. procedure 带参数,trigger不带参数。
  2. procedure 体将declare 改为is,trigger体局部变量的声明依然是declare。
  3. procedure 的调用采用程序块主动调用,trigger是对on之后的对象做了某种动作(如insert)才触发。
  4. trigger追加了时间,时间,对象,方式等的细节。

实验题

1、增加一新表XS_1,表结构和表XS相同,用来存放从XS表中删除的记录。
触发器tr_1

create or replace trigger tr_lbefore delete on xsfor each row
declarebegininsert into xs_del(xh,xm,zym,xb,cssj,zxf)values(:old.xh,:old.xm,:old.zym,:old.xb,:old.cssj,:old.zxf);
end tr_l;

操作过程:
(1)建xs_del表

create table xs_del as select * from xs;
truncate table xs_del;

(2)查询xs表
在这里插入图片描述
(3)执行一条删除语句

delete from xs where xh='001';

(4)查询xs_del表
在这里插入图片描述
2、监控用户对XS表的操作,要求:当XS表执行插入、更新和删除3种操作后在sql_info表中给出相应提示和执行时间。
触发器tr_2:

create or replace trigger tr_2after delete or insert or update on xsfor each row
declarev_info sql_info.info%type;
beginif inserting thenv_info:='插入';elsif updating thenv_info:='更新';elsev_info:='删除';end if;insert into sql_info values (v_info,sysdate);
end tr_2;

操作过程:
(1)创建sql_info表

create table sql_info(info varchar2(10),time date);

(2)手动更新一个数据
eg.更新张琼同学为张小琼同学
在这里插入图片描述
(3)查询sql_info表
在这里插入图片描述
改进:综合前两个例子
触发器tr_3:

create or replace trigger tr_3after delete or insert or update on xsfor each row
declarev_info sql_info.info%type;
beginif inserting thenv_info:='插入';insert into zqy(time,info,xh,xm,zym,xb,cssj,zxf,bz) values(sysdate,v_info,:new.xh,:new.xm,:new.zym,:new.xb,:new.cssj,:new.zxf,:new.bz);elsif updating thenv_info:='更新';insert into zqy(time,info,xh,xm,zym,xb,cssj,zxf,bz) values(sysdate,v_info,:old.xh,:old.xm,:old.zym,:old.xb,:old.cssj,:old.zxf,:old.bz);elsev_info:='删除';insert into zqy(time,info,xh,xm,zym,xb,cssj,zxf,bz) values(sysdate,v_info,:old.xh,:old.xm,:old.zym,:old.xb,:old.cssj,:old.zxf,:old.bz);end if;
end tr_3;

在这里插入图片描述

3、针对Scott.emp表,记录其相应操作的信息,具体如下:
当执行插入操作时,统计操作后员工人数;
当执行更新工资操作时,统计更新后员工平均工资;
当执行删除操作时,统计删除后各个部门剩余的人数(游标)。

触发器t4:

create or replace trigger t4after insert or update or delete on scott.emp  
declarev_1 number;v_2 scott.emp.sal%type;
beginif inserting thenselect count(*) into v_1 from scott.emp;dbms_output.put_line('添加记录后的总人数为:'||v_1);elsif updating thenselect avg(sal) into v_2 from scott.emp;dbms_output.put_line('更新记录后的平均工资为:'||v_2);elsefor v_s in (select deptno,count(*) num from scott.emp group by deptno)loopdbms_output.put_line('删除记录后各个部门的部门号和人数:'||v_s.deptno||' '||v_s.num);end loop;end if;
end ;

在这里插入图片描述

系统触发器

1、通过触发器记录是何用户,何时登录了系统
(1)建表:

create table u_1
( username varchar2(50),activity varchar2(20),time date
);

(2)触发器st1:

create or replace trigger st1
after logon on database
begininsert into u_1 values(user,'logon',sysdate);
end st1;

在这里插入图片描述
2、建一触发器,作用为禁止在休息日(周六,周天)改变scott.emp雇员信息。(包括添加,删除,修改)
触发器t1:

create or replace trigger t1before insert or delete or update on scott.emp
beginif to_char(sysdate,'DAY') in ('星期六','星期日')then raise_application_error(-20001,'不能在休息日修改员工信息');end if;
end t1;

在这里插入图片描述
在这里插入图片描述


http://www.ppmy.cn/news/155663.html

相关文章

MyIm

今天用了这个工具 以后就用这个工具上QQ MSN了。还能整合其他得一些聊天工具。such as icq .以后不用又开QQ 又开MSN了 我得myim号是 11459410

Fabric实战(7)Fabric模块配置参数详解-orderer

orderer模块主要负责对交易进行排序&#xff0c;并将排序好的交易打包成区块。 1 orderer模块的命令和参数 usage: orderer [<flags>] <command> [<args> ...]Hyperledger Fabric orderer nodeFlags:--help #显示帮助信息Commands:help [<command>.…

Zemax自学---1(基础知识)

看北京理工大学公开课总结的 光学系统设计与工艺&#xff08;北京理工大学&#xff09;_哔哩哔哩_bilibili 光学系统 线段以从左到右&#xff0c;从下到上为正 角度以锐角度量&#xff0c;顺时针为正 像差 色差&#xff1a; 1.介质色散&#xff08;不同波长光经过介质…

php在线解密,zend在线解密

PHP在线解密 支持Zend解密&#xff0c;易盾解密&#xff0c;混淆解密。支持Zend/PHP5.2&#xff0c;Zend/PHP5.3解密&#xff0c;Zend/PHP5.4解密。 支持易盾1.x&#xff0c;易盾2.x解密。支持phpjm解密&#xff0c;tianyiw解密&#xff0c;zym解密&#xff0c;威盾/微盾解密。…

Linux环境下搭建主从DNS服务器

一、bind简介 Linux中通常使用bind来实现DNS服务器的架设&#xff0c;bind软件由isc(www.isc.org)维护。在yum仓库中可以找到软件&#xff0c;配置好yum源&#xff0c;直接使用命令yum install bind就可以安装&#xff0c;监听窗口为53。bind的主要配置文件为/etc/named.conf&…

基于FTP协议的文件上传与下载

FTP协议 FTP协议建立在TCP协议之上&#xff0c;是进行文件传输服务的常用协议&#xff0c;采用C/S模式&#xff0c;是一个用于在计算机网络上在客户端和服务器之间进行文件传输的应用层协议。 (TCP协议可参考&#xff1a;http://t.csdn.cn/6a78D &#xff09; FTP服务器的简单…

Xmodem、Ymodem、Zmodem

文件传输协议&#xff1a; 文件传输是数据交换的主要形式。在进行文件传输时&#xff0c;为使文件能被正确识别和传送&#xff0c;我们需要在两台计算机之间建立统一的传输协议。这个协议包括了文件的识别、传送的起止时间、错误的判断与纠正等内容。 在SecureCRT下的传输协议…

Datawahle组队学习——妙趣横生大数据 Day1

妙趣横生大数据 Day1 [妙趣横生大数据 Juicy Big Data](https://datawhalechina.github.io/juicy-bigdata/#/?id妙趣横生大数据-juicy-big-data)一、大数据概述大数据——第三次信息化浪潮大数据概念大数据应用大数据关键技术 二、Hadoop背景介绍特性项目架构 实验1. 准备工作…