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 视图,索引

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Oracle触发器是一种在数据库中定义的特殊类型的存储过程,它会在指定的数据库事件发生时自动执行。在Oracle11g和Oracle12c中,可以定义和使用多种类型的触发器。其中包括简单DML触发器(如BEFORE、AFTER和INSERT OF触发器)、组合触发器和非DML触发器(如DDL事件触发器数据库事件触发器)[1]。 触发器的作用是在特定的数据库事件发生时执行一系列的操作,例如在插入、更新或删除数据时触发某些逻辑。触发器可以用于实现数据完整性约束、审计跟踪、数据变更记录等功能[1]。 创建触发器的语法如下: CREATE [OR REPLACE] TRIGGER trigger_name {BEFORE | AFTER | INSTEAD OF} {INSERT | UPDATE | DELETE | {INSERT | UPDATE | DELETE}} ON table_name [FOR EACH ROW] [WHEN (condition)] [DECLARE] -- 声明变量和常量 BEGIN -- 触发器的逻辑代码 END; 触发器可以根据需要定义在表级别或行级别,并可以使用条件谓词来区分不同的触发事件。例如,INSERTING条件谓词在INSERT事件发生时为TRUE,UPDATING条件谓词在UPDATE事件发生时为TRUE,DELETING条件谓词在DELETE事件发生时为TRUE[3]。 总结起来,Oracle触发器是一种在数据库中定义的特殊类型的存储过程,可以在特定的数据库事件发生时自动执行一系列的操作。在Oracle11g和Oracle12c中,可以定义和使用多种类型的触发器,包括简单DML触发器、组合触发器和非DML触发器触发器可以用于实现数据完整性约束、审计跟踪、数据变更记录等功能[1][2][3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值