触发器可以看做一种“特殊”的存储过程,它定义了一些与数据库相关事件(如INSERT,UPDATE,CREATE等事件)发生时应执行的“功能代码块”,常用与管理复杂的完整性约束,或监控对表的修改,甚至可以实现对数据的审计功能。

触发器语法格式:

create [or replace] trigger tri_name
[before | after | instead of] tri_event
on table_name | view_name | user_name | db_name
[for each row] [where tri_condition]
begin
plsql_sentences;
end tri_name;
/

根据触发器的触发事件和触发器的执行情况,将Oracle的触发器分为以下5中:

  • 行级触发器
  • 语句触发器
  • 替换触发器
  • 用户事件触发器
  • 系统事件触发器

语句触发器:

实例:使用触发器,在scott模式下针对dept表的各种操作进行监控,为此首先需要创建一个日志表dept_log,它用于存储对dept表的各种数据操作信息,比如操作种类(插入,修改..)、操作时间等。

1 创建dept_log
create table dept_log(
operate_tag varchar2(10),
operate_time date
)
2 创建触发器
create or replace trigger tri_dept
before insert or update or delete on dept
declare var_tag varchar2(10);
begin
if inserting than var_tag := '插入';
elsif updating than var_tag := '修改';
elsif deleting than var_tag := '删除';
end if;
insert into dept_log values(var_tag,sysdate);
end tri_dept;
/

未完----

参考

《Oracle从入门到精通》--明日科技 编著

oracle之触发器的更多相关文章

  1. Oracle数据库——触发器的创建与应用

    一.涉及内容 1.理解触发器的概念.作用和类型. 2.练习触发器的创建和使用. 二.具体操作 (实验) 1.利用触发器对在scott.emp表上执行的DML操作进行安全性检查,只有scott用户登录数 ...

  2. [结]Oracle trigger(触发器)摘录

    1.触发器: 是许多关系数据库系统都提供的一项技术.在ORACLE系统里,触发器类似过程和函数,都有声明,执行和异常处理过程的PL/SQL块. 触发器在数据库里以独立的对象存储,它与存储过程和函数不同 ...

  3. oracle的触发器

    oracle的触发器分为语句级和行级两种类型,在视图上所创建的触发器叫做什么类型的触发器? DML触发器有三类: 1, insert触发器: 2, update触发器: 3, delete触发器: 触 ...

  4. oracle中触发器的讲解

    触发器在数据库里以独立的对象存储,它与存储过程和函数不同的是,存储过程与函数需要用户显示调用才执行,而触发器是由一个事件来启动运行.即触发器是当某个事件发生时自动地隐式运行.并且,触发器不能接收参数. ...

  5. MYSQL和ORACLE的触发器与存储过程语法差异

    整改了一番脚本,遇到了一些两种数据库之间的差异,记录一下: 触发器: 差异 MYSQL ORACLE 说明 创建语句不同 create trigger `AA` BEFORE INSERT on `B ...

  6. Oracle - java创建Oracle 的触发器

    Oracle - java创建Oracle 的触发器 今天碰到这个问题,遇到点问题,到这来 总结一下解决的办法, 需求,为一个用户当中的表增加一个自动增长列,我还没有学Oracle 的这部分,只是简单 ...

  7. oracle数据库触发器(trigger)用法总结

    from:http://blog.csdn.net/zhanzhib/article/details/48729417 触发器的意思就是当我们对数据库对象(一般是表或视图)进行insert.updat ...

  8. Oracle中用触发器实现自动记录表数据被修改的历史信息

    oracle中用触发器实现自动记录表数据被修改的历史信息. 有一些比较重要的表字段每次修改需要做历史记录,以后可以查询这个表中某些字段如何被修改过.由什么改成了什么等,由谁操作,操作时间等. 实例:1 ...

  9. Oracle使用触发器和mysql中使用触发器的比较——学习笔记

    一.触发器 1.触发器在数据库里以独立的对象存储, 2.触发器不需要调用,它由一个事件来触发运行 3.触发器不能接收参数 --触发器的应用 举个例子:校内网.开心网.facebook,当你发一个日志, ...

随机推荐

  1. xtrabackup 2.4.3 BUG

    用XtraBackup对备份集进行apply log 的时候,卡在 xtrabackup 版本:2.4.3 InnoDB: Waited for 1535930 seconds for 128 pen ...

  2. 隐藏软键盘(解决自定义Dialog中无法隐藏的问题)

    /** * Dialog中隐藏软键盘不管用 * @param activity */ public static void HideSoftKeyBoard(Activity activity){ t ...

  3. docker和kubernetes中hostname的使用和常见问题

    hostname在docker中是使用UTS namespace进行隔离的.docker中主要有两种ns的用法, 一种是docker run --uts="" busybox.这种 ...

  4. vue页面优化中的v-show和v-if使用比较

    在页面中使用了v-if做了一个tab框,点击不同的tab框,并加载不同的内容,由于各tab框对应的内容是4到5张统计图,加载的数据量比较大,发现后台请求响应返回的时间很快,在100ms以内,但点击ta ...

  5. 实验五 <FBG>团队亮相

    一.队名:FBG 二.队员: 201571030321:马玉婷 (小队长) 201571030317:马美玲 201571030331:益西卓嘎 三.队员风采: 201571030321:马玉婷 风格 ...

  6. python 写文本文件出现乱码

    最近工作中想完善一下监控日志,同事说客户突然说我们最近几天推送的数据只有几家,赶紧看预警,应推4700多家,实推3400多家,用户可能是看错了,但我记得当时项目验收上线时,这个来源的推送数据肯定是可以 ...

  7. Java ----> java io / java nio / java net 学习资源汇总

    Java IO教程 Java NIO 系列教程 Java网络教程 学习Java基础的一个英文网站:http://tutorials.jenkov.com/ ,上面中文教程来自并发编程网,上面中文教程翻 ...

  8. Python字符编码与转换

          需知: .在python2默认编码是ASCII, python3里默认是unicode .unicode 分为 utf-(占4个字节),utf-(占两个字节),utf-(占1-4个字节), ...

  9. JVM内存模型和GC机制

    目录 1.JVM内存模型 2.GC 1.JVM内存模型 堆,栈,本地方法栈,方法区,程序计数器 2.GC 新生代收集器:Serial(单线程).ParNew.Parallel Scavenge: 老年 ...

  10. python之路——博客目录

    博客目录 python基础部分 函数 初识函数 函数进阶 装饰器函数 迭代器和生成器 内置函数和匿名函数 递归函数 常用模块 常用模块 模块和包 面向对象 初识面向对象 面向对象进阶 网络编程 网络编 ...