zoukankan      html  css  js  c++  java
  • 触发器

    常用触发器

     1 -- 行级触发器
     2 
     3 --当对一个emp进行删除时将原数据进行备份
     4 --创建备份表
     5 create table emp_BAk as select * from emp;
     6 truncate table emp_BAk;
     7 -- 触发器
     8 create or replace trigger bak_emp 
     9 before delete  -- 在删除之前 
    10 on emp   --触发器作用在emp表上
    11 for each row -- 标识为行级触发器,也就是每影响一行就执行一次
    12 -- 触发器的主体部分
    13 declare
    14 begin
    15   insert into emp_BAk values(:old.empno,:old.ename,:old.job,:old.mgr,:old.hiredate,:old.sal,:old.comm,:old.deptno);
    16 end;
    17 -- 删除数据时,会将删除的数据保存到emp_BAk表中
    18 delete emp where empno = 7369;
    19 --把删除的数据恢复到原表中
    20 insert into emp select * from emp_bak;
    21 --清除备份表
    22 truncate table emp_bak;
    23 
    24 
    25 -- 语句级触发器
    26 -- 当插入、更新、删除emp表时进行显示信息
    27 create trigger show_emp_info 
    28 after delete or insert or update
    29 on emp
    30 --for each row -- 不要这条命令就是语句级触发器
    31 declare
    32 
    33 begin
    34   if updating then
    35     dbms_output.put_line('触发器提示:更新emp表中数据');
    36   elsif deleting then
    37     dbms_output.put_line('触发器提示:删除emp表中数据');
    38   elsif inserting then
    39     dbms_output.put_line('触发器提示:插入emp表中数据');
    40   end if;
    41 end;
    42 -- 测试
    43 update emp set sal = 500 where empno = 7369;
    44 delete emp where empno = 7369;
    45 insert into emp select * from scott.emp where empno = 7369;
    46 
    47 
    48 -- 模式触发器(确保你的数据库中有archer用户)
    49 create table archer_event(
    50 event nvarchar2(20),
    51 username varchar2(10),
    52 owner varchar2(10),
    53 objname varchar2(20),
    54 objtype varchar2(20),
    55 datetime date
    56 );
    57 
    58 create or replace trigger tr_archer
    59 after ddl
    60 on archer.schema
    61 declare
    62 
    63 begin
    64   insert into archer_event values(ora_sysevent,ora_login_user,
    65   ora_dict_obj_owner,ora_dict_obj_name,ora_dict_obj_type,sysdate);
    66 end;
    67 -- 当archer用户创建数据表时会将信息保存到archer_event表中
    68 create table abc(
    69 id number,
    70 name varchar2(10)
    71 );
    72 -- 查看表中的数据
    73 select * from archer_event;
  • 相关阅读:
    SPFA算法——香甜的黄油
    并查集及应用
    背包问题——装箱问题(洛谷1049)用true模板
    划分类动态规划——乘积最大(洛谷1018,codevs1017)
    多源最短路Floyed——多源最短路(CODEVS1077)(可能Floyed模板)
    并查集——亲戚(洛谷1551)(可做并查集模板)
    最小生成树Kruskal——最优布线问题(codevs 1231) (可做Kruscal模板)
    最小生成树Prim——最短网络(洛谷1546)(USACO 3.1.1)可当Prim模板
    lsy263 の CSP-S 2019游记
    About Me
  • 原文地址:https://www.cnblogs.com/yunwei1237/p/5902980.html
Copyright © 2011-2022 走看看