• 触发器


    常用触发器

     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;
  • 相关阅读:
    一款纯css3实现的鼠标经过按钮特效
    一款基于jquery漂亮的按钮
    一款仿ios7的switches开关按钮
    基于jquery的可拖动div
    一款基于jquery ui漂亮的可拖动div实例
    一款html5和css3实现的小机器人走路动画
    一款纯css3实现的图片3D翻转幻灯片
    纯css3实现图片三角形排列
    7款基于jquery的动画搜索框
    一款纯css3实现的机器人看书动画效果
  • 原文地址:https://www.cnblogs.com/yunwei1237/p/5902980.html
Copyright © 2020-2023  润新知