zoukankan      html  css  js  c++  java
  • 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;
  • 相关阅读:
    如何使用jetty
    windows安装TortoiseGit详细使用教程【基础篇】
    shiro实现APP、web统一登录认证和权限管理
    Eclipse上安装GIT插件EGit及使用
    RPC之——HTTP协议栈
    Spring Boot构建RESTful API与单元测试
    Spring 之注解事务 @Transactional
    浅析Java中的final关键字
    String中intern的方法
    MySQL索引的查看创建和删除
  • 原文地址:https://www.cnblogs.com/liuwt365/p/4192518.html
Copyright © 2011-2022 走看看