zoukankan      html  css  js  c++  java
  • 开发PL/SQL子程序——触发器——行触发器


    行触发器是指当执行dml操作时,没作用一行被触发的一次的触发器。

    create table audit_emp_change(
    name varchar2(10),oldsal number(6,2),newsal number(6,2),time date);
    create or replace trigger tr_sal_change
    after update of sal on emp for each row
    declare v_temp int;
    begin
    select count(*) into v_temp from audit_emp_change
    where name=:old.ename;
    if v_temp=0 then
    insert into audit_emp_change
    values(:old.ename,:old.sal,:new.sal,sysdate);
    else
    update audit_emp_change
    set oldsal=:old.sal,newsal=:new.sal,time=sysdate
    where name=:old.ename;
    end if;
    end;
    /

    建立触发器tr_sal_change 之后,当修改雇员工资时,会将每个雇员的工资变化全部写入到审计表audit_emp_change中;

    update emp set sal=sal*1.1 where deptno=30;
    select * from audit_emp_change;

    NAME       OLDSAL                 NEWSAL                 TIME                     
    ---------- ---------------------- ---------------------- -------------------------
    ALLEN      1600                   1760                   07-5月 -13               
    WARD       1250                   1375                   07-5月 -13               
    MARTIN     1250                   1375                   07-5月 -13               
    BLAKE      2850                   3135                   07-5月 -13               
    TURNER     1500                   1650                   07-5月 -13               
    JAMES      950                    1045                   07-5月 -13               

    6 rows selected

    当执行update之前先删除tr_sec_change 语句触发器。否则无法更新;


    -------------------------------------------

    作者:赵杰迪

    -------------------------------------------

  • 相关阅读:
    Linux下Mysql的安装步骤
    分布式集群Session原理及实现共享
    MySQL数据库表分区功能详解
    PHP面向对象程序设计之接口(interface)
    PHP面向对象程序设计之抽象类和抽象方法
    MySQL优化技巧
    MySQL性能优化之max_connections参数
    PHP环境下Memcache的使用方法
    PHP之Trait详解
    如何选择合适的MySQL数据类型
  • 原文地址:https://www.cnblogs.com/zhaojiedi1992/p/oracle11g_sql_0023.html
Copyright © 2011-2022 走看看