专栏首页颍川Oracle触发器

Oracle触发器

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/wangtongxue123456/article/details/79681909

  • 触发器
    • 什么是触发器
    • 创建触发器的语法
    • 触发器的类型
    • 应用场景

触发器

什么是触发器

数据库触发器是定义一个与表关联的、存储的pl/sql程序。 每当一个特定的数据库操作语句(insert/update/delete)在指定的表上发出时,oracle自动执行触发器中定义的语句序列。

创建触发器的语法

CREATE | or REPLACE | TRIGGER 触发器名

{BEEFORE | AFTER }
{DELETE | INSERT | (UPDATE | OF 列名)
}
ON 表名
[FOR EACH ROW [WHEN(条件)]]
PLSQL 块

--BEEFORE | AFTER  用来指明操作前还是操作后调用
-- 对于更新操作可以使用一个 of
但更新 of 指定的列时才执行触发器。
-- FOR EACH ROW 
指明触发器的类型

触发器的类型

  • 语句级的触发器

在指定的操作语句操作之前或之后执行一次,不管这条语句影响了多少行。

  • 行级触发器

触发语句作用的每一条记录都被触发。在行级触发器中使用:old和:new 伪记录变量,识别值得状态。

  1. :old和:new 代表 同一条记录
  2. :old 表示操作改行之前的,这一行的值
  3. :new 表示操作改行之后的,这一行的值 语句级触发器:针对的是表

行级触发器:针对的是行

应用场景

  1. 复杂的安全性检查
--禁止某段时间插入数据
-- 条件 周六日不可以 ,9点和18点之外不行
create or replace trigger securityemp
before insert
on A
begin
  if to_char(sysdate,'day') in ('星期六','星期日') or 
      to_number(to_char(sysdate,'hh25')) not between 9 and 18 then
      RAISE_APPLICATION_ERROR(-20001, '禁止在非工资时间插入数据');
  end if;    
end;
  1. 数据的确认
/**
 数据不能比增加前变少(涨工资案例)
*/
create or replace trigger checksalary
before update
on A
for each row --定义触发器类型为行级,更改每一行都执行触发器
begin
  if :new.num< :old.num then
  --抛出异常
   RAISE_APPLICATION_ERROR(-200002, '数据不能比增加前变少(');
  end if;
end;
  1. 数据库审计(跟踪数据库的操作,oracle已经单独的提供了数据库审计)
  2. 数据的备份和同步

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Visual Studio Code --GO开发工具配置

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    颍川
  • 《GO语言圣经》读书笔记(一)

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    颍川
  • dcoker 学习笔记

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    颍川
  • Mysql触发器

    MySQL触发器 1、 触发器作用 日志跟踪:使用数据库记录apache等日志,可以使用自动插入操作 验证数据:触发器可以验证更新数据库要存入的数据 引用完整:...

    苦咖啡
  • 触发器最全总结(适合复习数字逻辑使用)

    cuptobjut
  • 0642-6.2-如何在CM界面创建触发器

    Fayson在这里先介绍下CM中的trigger,也就是触发器。触发器是当一个或多个特定条件得到满足的服务、角色、角色组、或主机将采取指定动作的声明。条件为ts...

    Fayson
  • PL/SQL --> DML 触发器

    何谓触发器?简言之,是一段命名的PL/SQL代码块,只不过该代码块在特定的条件下被触发并且执行。对于这样的代码我们称之为触发器

    Leshami
  • 触发器在渗透中的利用

    0x01 什么是触发器: 触发器对表进行插入、更新、删除的时候会自动执行的特殊存储过程。触发器一般用在check约束更加复杂的约束上面。触发器和普通的存储过程的...

    逸鹏
  • 【DB笔试面试448】Oracle中有哪几类触发器?

    Oracle数据库有4种触发器,分别是DML、替代触发器(INSTEAD OF触发器)、DDL和系统触发器,一般的应用系统中都使用到DML、替代触发器,而DDL...

    小麦苗DBA宝典
  • MySQL从删库到跑路_高级(五)——触发器

    触发器是和表关联的特殊的存储过程,可以在插入,删除或修改表中的数据时触发执行,比数据库本身标准的功能有更精细和更复杂的数据控制能力。

    良月柒

扫码关注云+社区

领取腾讯云代金券