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 语句触发器。否则无法更新;


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

    作者:赵杰迪

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

  • 相关阅读:
    JAVA理解逻辑程序的书上全部重要的习题
    体检套餐管理系统的综合版
    一路奔跑,一路寻找
    员工考勤信息管理小程序
    枚举的独特强大之处
    C#中HashTable的用法
    项目经理评分
    若想成功,请记住!
    数组的经典例子
    S1的小成果:MyKTV系统
  • 原文地址:https://www.cnblogs.com/zhaojiedi1992/p/oracle11g_sql_0023.html
Copyright © 2011-2022 走看看