ORACLE触发器

Oracle触发器是一种特殊数据库对象,用于在特定事件(如INSERT,UPDATE,DELETE)发生时自动执行操作,实现复杂数据约束和验证。可以查看所有触发器、创建新的触发器,并通过BEFORE或AFTER指定触发时间。触发器的执行对用户透明,且与存储过程不同,它们在事件触发时自动执行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

1.什么是触发器(trigger)

触发器:是一种特殊的数据库对象,它可以在特定的事件发生时自动执行一些操作,可以用来实现复杂数据约束,数据验证,数据审计等功能

2.触发器的基本原理

触发器类似于过程函数,其包含声明部分和异常处理部分,并且都有名称、都被存储在数据库中,但与普通的过程函数不同的是,函数需要用户显示的调用才执行,而触发器则是当某些事件发生时,由oracle自动执行,触发器的执行对用户来说是透明的

一.查看所有触发器

1.查看某个表的触发器

select * from all_triggers where table_name='表名';  
 --trigger_name 触发器名称
 --table_name 表名
 --owner 所属用户 

在这里插入图片描述

2.查看触发器详细信息

select * from all_source where type='TRIGGER' AND name='触发器名称';
--text 触发器详细信息
--name 触发器名称

3.查询所有触发器、存储过程、视图、表

 --所有触发器 object_name 触发器名称(也可以查user_triggers表)
Select * From user_objects Where object_type='TRIGGER';
--所有存储过程 object_name 存储名称(也可以查user_procedures表)
Select * From user_objects Where object_type='PROCEDURE';
--所有视图 object_name 视图名称(也可以查user_views表)
Select * From user_objects Where object_type='VIEW';  
 --所有表 object_name 所有表名(也可以查user_tables表)
Select * From user_objects Where object_type='TABLE';

二.创建触发器

1.语法:

create or replace trigger trigger_name --创建触发器,名称为trigger_name 
before|after                    --before事前触发器,after事后触发器
dml操作 on--insert or update or delete  on table_name  
[for each row]--默认语句级,写上是行级
begin --声明开始
  --如果是插入则..删除则..更新则..
  --前者锁定某个操作针对表,后者针对不同的dml操作
  要执行的语句;
end;--声明结束

2.示例:

CREATE OR REPLACE TRIGGER TRIGGER_NAME
  AFTER 
  INSERT OR UPDATE OR DELETE ON table_name
  REFERENCING NEW AS NEW OLD AS OLD
  FOR EACH ROW
BEGIN
--新增
  IF INSERTING THEN
    insert into table_name_copy
      (
      id,
      CODE,
      NAME)values
      (:new.id,
       :new.code,
       :new.name
       );
  END IF;
  --修改
  IF UPDATING THEN
       update table_name_copy
       set CODE=:new.CODE,
           NAME=:new.NAME,
           id=:new.id
           where pk_supplier = :new.pk_supplier ;
  END IF;

  ---删除
   IF DELETING  THEN
    DELETE FROM  table_name_copy  where id=:old.id;
   END IF;
END;

三.触发器总结

(1).每个触发器都与一个特定的表相关联,并且只有在该表上发生特定的事件(如insert,update,delete)时才会触发
(2).触发器定义包含触发事件、触发时间和触发操作
(3).触发器是存储在数据库中的对象,它们与其他数据库对象一样可以被管理和维护
(4).当与其相关联的表上发生特定事件时,触发器会自动执行,而不需要手动干预
(5).触发器可以在事务中使用,确保数据的一致性和完整性

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值