PLSQL——触发器

本文详细介绍了PLSQL中的触发器,包括触发器概述、类型(DML触发器、模式触发器、数据库级触发器)、创建触发器的语法、表级触发器与行级触发器的区别,以及如何启用、禁用和删除触发器。触发器在特定事件发生时自动执行,是数据库管理和业务逻辑的重要工具。
摘要由CSDN通过智能技术生成

1.触发器概述

触发器是一种在事件发生时隐式地自动执行的PL/SQL块,不能接受参数,不能被显式调用

2.触发器类型

  1. DML触发器:在对表或视图执行DML语句时 执行,其中包含 语句级触发器(表级触发器),行级触发器,INSTEAD OF触发器(替换触发器)
  2. 模式(DDL)触发器:在模式中执行 DDL 语句时执行
  3. 数据库级触发器:在发生打开、关闭、登录和退出数据库等系统事件时执行

3.创建触发器的语法

语法:

create [or replace] trigger 触发器名字
before|after 触发器事件 on table_name
[for each row]--行级触发器
[when trigger_condition]
trigger_body

语法解释:
trigger_name:触发器名称
before | after | instead of : 指定触发器是在触发事件发生之前触发还暗示发生之后触发。
trigger_event:触发事件,在DML触发器中主要为insert、update
[OF column_list]、delete
table_name:表名,表示发生触发器作用的对象
for each row:指定创建的是行级触发器,若没有该子句则创建的是语句级触发器
when trigger_condition:添加的触发条件
trigger_body:触发体,是标准的PL/SQL语句块

4.表级触发器(语句级触发器)

无论受影响的行数是多少,都只执行一次
没有for each row语句,在begin代码段中不可以使用**:new:old**。
语法:

create or replace trigger 触发器名称 
 before|after 
 update or |delete or |insert on 表名
declare
   声名变量;
begin
   触发器代码;
end;

before:表示在sql语句执行前,执行触发器的代码
after:表示在sql语句执行之后,执行触发器的代码

以下三个都是boolean类型的
updating:如果触发这个触发器的是一条update语句,它值就是true
deleting:如果触发它是一条delete语句,它值就是true
inserting:如果触发它是一条insert语句,它值就是true

--给dept表创建一个触发器,当dept表中的数据被修改、删除、插入时打印该操作
create trigger t1 
before insert or update or delete on dept
begin
   if inserting then
      dbms_output.put_line('插入');
   end if;
   if updating then
      dbms_output.put_line('修改');
   end
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值