zoukankan      html  css  js  c++  java
  • oracle 触发器(基础)

    我的理解 所谓的触发器也就是相当于方法 只是省去了我们的一些繁琐的操作 像存储过程我们想要使用代码实现的功能就要一遍一遍的点击执行是不是有点麻烦,但是我们用触发器的话就会省去一些操作,比如我们想要在某表里面添加一条数据同时又给另一个表添加一条数据而且有主外键关系,那么我们需要一条一条的来写  是不是太麻烦了  所以这就借用了触发器这个方法 ,就能帮助我们解决这个问题 再打个比方 通俗讲:一个班级新来了一个学生是不是要学生表里添加一个学生信息然后班级表里面人数要+1那么这时候就派上触发器的用场了

    进入主话题 

    首先触发器的基本语法--记住一定是先执行触发器然后在执行你的操作方法

    create or replace trigger 名字  --创建触发器

    after/before   --在什么什么之后 /在什么什么之前

    insert/update/delete --操作方法 你用哪个就写哪个

    on      --理解为在的意思

    student --表名

    for each row

    begin

    逻辑处理

    end;

    ------------------操作方法

    insert into 表名 values();

    update 表名 set 字段=字段 where ....;

    delete from 表名 where 条件;

    --举一个例子--我先写操作方法是为了写触发器作比较 写不容易出错误  希望认可的朋友可以借鉴一下

    添加分数时,触发器打印 有人在做添加
    INSERT INTO chenji VALUES(20080101,2,100);
    删除分数时,触发器打印 有人在做删除
    DELETE FROM chenji WHERE stuno=20080101
    修改分数时,触发器打印 有人在做修改
    UPDATE chenji SET score=99 WHERE stuno=20080101
    -- 触发器
    CREATE OR REPLACE TRIGGER t1
    AFTER
    INSERT OR DELETE OR UPDATE
    ON chenji
    FOR EACH ROW
    BEGIN
    IF inserting THEN -- 判断用户的动作
    dbms_output.put_line('添加');
    END IF;
    IF deleting THEN
    dbms_output.put_line('删除');
    END IF;
    IF updating THEN
    dbms_output.put_line('修改');
    END IF;
    END;

    +for each row 为行级触发器,不加for each为语句级触发器 具体意思还是自己尝试一下效果最好!

    图片里面end后面应该有个分号结束 可能是忘记写了

    --补充一个知识点

    触发器监控用户多个动作时,如何判断具体的动作
    inserting :判断用户是否执行的是添加动作
    deleting判断用户是否执行的是删除动作
    updating判断用户是否执行的是修改动作

    这个触发器知识说多也不多但是也不少  就是要套公式 基本公式掌握了 遇到一些问题就去套公式一般就能做出来了  最主要还是要理解触发器的原理 就OK!

                                                                                                                          时间 2019-03-05 晚上23:44  HaoDi888

  • 相关阅读:
    MySQL主从复制
    高可用系列之Nginx
    02.PHP7.x编译详解
    01.PHP5.x编译详解
    月薪2500到年薪20+我经历了些什么?
    更换gitlab公网IP,引发的故障。
    博客资料汇总
    Nginx编译参数
    Zabbix3.0部署最佳实践
    SharePoint 2013让页面显示错误
  • 原文地址:https://www.cnblogs.com/lqh-haodi/p/10480229.html
Copyright © 2011-2022 走看看