【Oracle学习】之 触发器(Trigger)

oracle文档: https://docs.oracle.com/cloud/latest/db112/LNPLS/triggers.htm#LNPLS750


概述:
  触发器是一种特殊类型的存储过程,编译后存储在数据库服务器中,当特定事件发生时,由系统自动调用执行,而不能由应用程序显式地调用执行。此外,触发器不接受任何参数。触发器主要用于维护那些通过创建表时的声明约束不能实现的复杂的完整性约束,并对数据库中特定事件进行控制和相应。

一、触发器的类型

(1) DML 触发器:
    ①基于表(TABLE):(有BEFORE、AFTER)
        Ⅰ语句级触发器:只触发一次(不可使用new,old缓存)
        Ⅱ 行级触发器:每一行(for each row)
    ②instead of:替代触发器替代数据库视图上的DML操作。
(2) 系统触发器:
    ①数据库级(Database):
    ②模式级(Schema):替代触发器替代数据库视图上的DML操作。(DDL、DCL)

二 、DML 触发器操作

//语法
CREATE [OR REPLACE] TRIGGER trigger_name
BEFRORE|AFTER triggering_event [OF column_name]
ON table_name
[FOR EACH ROW]
[WHEN trigger_condition]
DECLARE 

BEGIN

EXCEPTION

END [trigger_name];
(1)语句级触发器 与 行级触发器
create or replace trigger tr1

after delete on test2_student
[for each row]

begin

    if (deleting)  then
        DBMS_OUTPUT.PUT_LINE('Deleting');
    END IF;

end;

这里写图片描述
这里写图片描述

(2)Before 和 After
注意:这两个只能用表,不能用于视图
after :在操作表之后触发(只能读取,不能修改)
before:操作表之前被触发。


(3)缓存:new 和 old

这里写图片描述
这里写图片描述
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值