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

原文地址:https://www.cnblogs.com/lqh-haodi/p/10480229.html