触发器


  触发器:隐式执行的存储过程,事件发生时候自动发生。
  用途:当表数据发生改变时,用来校验表。
        根据数据库发生的事件来完成维护工作。
   分类:dml触发(必须掌握):监控表
  dml触发器:定义语法
    create or replace trigger 触发器名称
    after|before 触发时间
    insert |update|delete 触发事件类型。可以写多个类型  比如 update or delete
    on 表 (作用于哪个表)
    for each row (针对执行语句的每行) | for each statment (针对每条执行语句,不写则默认为该种方式)
    declare 定义变量--可写可不写,不是必须的
    begin
      触发执行语句;
      (--可以写条件位句,不是必须的
      -- update-updating ,delete-deleting ,insert-inserting
      if updating then
        --如果是更新语句,则执行if条件里面的语句
      end if;
      )
    end;
    删除触发器:drop trigger 触发器名称
    --例子   
    --基本创建例子
    CREATE OR REPLACE TRIGGER t_emp
    BEFORE UPDATE ON myemp FOR EACH ROW
    BEGIN
      dbms_output.put_line('myemp中的数据被修改了');
    END;
    /
    --可以指定列创建触发器,只有该列被修改了才触发
    CREATE OR REPLACE TRIGGER t_emp
    BEFORE UPDATE OF comm ON myemp FOR EACH ROW
    BEGIN
      dbms_output.put_line('myemp中的comm被修改了');
    END;
    /
   --通过触发器设置id自动递增
   CREATE SEQUENCE se ;--创建序列
   CREATE TABLE tb_test(t_id INTEGER ,t_name VARCHAR2(20));
   CREATE OR REPLACE TRIGGER t_inc--创建一个触发器,
      BEFORE INSERT ON tb_test FOR EACH ROW
      BEGIN
        SELECT se.nextval INTO :new.t_id FROM dual;
      --:new.t_id := se.nextval;
      END;
      /
  
    :new 和 :old  表示执行语句的每一条数据(只针对行级触发器)
    :new 针对insert和update有效,表示执行过后新的数据
    :old 针对delete和update有效,表示执行之前的数据
    用法
     :new.列名
     :old.列名
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值