• oracle 触发器


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


    触发器可用于
      数据确认 
      实施复杂的安全性检查
      做审计,跟踪表上所做的数据操作等
      数据的备份和同步

    触发器的类型
      语句级触发器
        在指定的操作语句操作之前或之后执行一次,不管这条语句影响了多少行 。
      行级触发器(FOR EACH ROW)
        触发语句作用的每一条记录都被触发。在行级触发器中使用old和new伪记录变量, 识别值的状态。

    语法:

    CREATE  [or REPLACE] TRIGGER  触发器名
       {BEFORE | AFTER}
       {DELETE | INSERT | UPDATE [OF 列名]}
       ON  表名
       [FOR EACH ROW [WHEN(条件) ] ]
       PLSQL 块
        [FOR EACH ROW [WHEN(条件) ] ]-----行级触发器


    触发语句与伪记录变量的值

     1 --不能在非工作时间插入数据
     2 create or replace trigger SecrityEmp
     3 before insert
     4 on testemp
     5 begin
     6   if to_char(sysdate,'day') in ('星期六','星期天')
     7   or to_number(to_char(sysdate,'hh24')) not between 9 and 18 
     8   then
     9   raise_application_error(-20000,'不能在非工作时间插入数据');    
    10   end if;
    11 end;
    12 
    13 --涨后工资不能小于涨前工资
    14 create or replace trigger checksal
    15 before update
    16 on testemp
    17 for each row
    18 begin
    19   if :old.sal>:new.sal then
    20   raise_application_error(-20001,'涨工资不能小于之前的工资');
    21   end if;
    22 end;
  • 相关阅读:
    ES6常用语法简介
    webpack核心概念
    前端模块化规范详解
    使用Node.js原生代码实现静态服务器
    Node.js脚手架express与前段通信【socket】
    临门一脚- Node.js
    redis缓存穿透和雪崩
    redis哨兵模式
    redis主从复制
    redis发布订阅
  • 原文地址:https://www.cnblogs.com/liuwt365/p/4192518.html
Copyright © 2020-2023  润新知