oracle 触发器 条件判断,Oracle SQL 学习笔记26 - 触发器

本文详细介绍了Oracle数据库中的触发器,包括触发器的定义、分类、设计原则,以及如何创建DML触发器,如BEFORE、AFTER和INSTEAD OF触发器。特别强调了在条件判断下的触发器应用,如限制在工作时间内进行INSERT、UPDATE和DELETE操作,并给出了具体的创建示例。此外,还讨论了触发器与过程的关系,以及触发器的启用、禁用和测试方法。
摘要由CSDN通过智能技术生成

触发器

定义

Trigger是与tbale,view,schema或者databse相关的plsql程序块或过程,当特定事件发生时自动触发执行。

分类

触发器主要有两种类型:

应用trigger:由特定的应用程序的事件触发

数据库trigger:由数据库的特定事件触发

设计Trigger触发器的基本指导

首先,使用触发器可以执行一些相关动作,这些相关动作是集中的全局操作

其次,使用trigger应避免和数据库已有功能重复,或者和其他触发器重复

再其次,触发器可以调用plsql过程

最后,过度使用触发器会导致大型应用系统代码难以维护

创建DML触发的triggers

触发时机

触发时机有3个:

BEFORE:DML动作发生之前触发

AFTER:DML动作发生之后触发

INSTEAD OF:替换原有动作,比如一些不可更新的视图

单行受影响的情况

假设DML语句

INSERT INTO departments

(department_id, department_name, location_id)

VALUES(400, 'CONSULTING', 2400);

bef57d201208

s_line.JPG

多行受影响的情况

UPDATE employees

SET salary = salary * 1.1

WHERE department_id = 30;

bef57d201208

m_line.JPG

语法

CREATE [OR REPLACE ] TRIGGER trigger_name

timing

event1 [OR event2 OR event3]

ON object_name

[[REFERENCING OLD AS old | NEW AS new]

FOR EACH ROW

[WHEN (condition)]]

trigger_body

触发顺序

注意,如果一个事件触发多个触发器,则这个触发的先后顺序是随机的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值