Oracle 触发器

一. Oracle 触发器

  1. 什么是触发器
    监听器:监听表中的数据是否发生了改变(insert ,update ,delete)

  2. 监听器语法
    create or replace trigger 触发器名称
    before | after --在改变之前或之后执行触发器
    insert | update | delete --监听哪一个动作
    on 表名 – 监听哪一张表
    触发器的级别
    表级触发器:默认的
    更新多条记录,执行一次
    行级触发器: for each row
    更新多条记录,执行多次
    使用old ,new关键字必须使用 行级触发器

    declare
    – 声明变量
    begin
    – plsql
    end;

  3. 栗子 :添加一条记录,在控制台打印 ‘添加了一条记录’
    create or replace trigger insertEmpPrint
    before --在改变之前或之后执行触发器
    insert --监听哪一个动作
    on emp – 监听哪一张表

declare

begin
dbms_output.put_line(‘添加了一条记录’);
end;

insert into emp(empno ,ename ) values(1005,‘lucy’);
4. 栗子: 不能给员工降薪
create or replace trigger notUpdateLowerSal
before --在改变之前或之后执行触发器
update --监听哪一个动作
on emp – 监听哪一张表
for each row
declare

begin
– 判断更新之前与更新之后谁大
– 如果更新后小于更新前-- 降薪 – 反抗
if :new.sal < :old.sal then
–dbms_output.put_line(‘不能给员工降薪’);
– raise_application_error(p1 ,p2) – 窗口对象
– p1 : 错误编号 -20001 ~~ -20999
– p2 : 错误信息
raise_application_error(-20001,‘不能给员工降薪’);
end if;
end;

update emp set sal = sal - 1 where empno = 7788;

在这里插入图片描述

Oracle 存储函数
Oracle 存储过程
Oracle 游标
Oracle plsql基本语句
Oracle 视图,索引