我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Oracle的触发器trigger如何使用

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Oracle的触发器trigger如何使用

本篇内容主要讲解“Oracle的触发器trigger如何使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Oracle的触发器trigger如何使用”吧!

一、触发器定义

Oracle触发器是使用者对Oracle数据库的对象做特定的操作时,触发的一段PL/SQL程序代码器。触发的事件包括对表的DML操作,用户的DDL操作以及数据库事件等。

二、触发器分类

触发器分为语句级触发器和行级触发器。

  • 语句级触发器:在某些语句执行前或执行后被触发。

  • 行级触发器:在定义了触发器的表中的行数据改变时就会被触发一次。

按照用户具体的操作事件的类型,可以分为5种触发器。

  • 数据操作(DML)触发器:此触发器是定义在Oracle表上的,当对表执行insert、update、delete操作时可以触发该触发器。如果按照对表中行级数据进行触发或语句级触发,又可以分为行级(row)触发器,语句级触发器,按照修改数据的前后触发触发器,又可以分为 after 触发器和before触发器之分。

  • 数据定义操作(DDL)触发器:当对数据库对象进行create、alter、drop操作时,触发触发器进行一些操作记录保存、或者限定操作。

  • 用户和系统事件触发器:该类型的触发器是作用在Oracle数据库系统上,当进行数据库事件时,触发触发器,一般用来记录登录的相关信息。

  • INSTEAD OF 触发器:此类型的触发器是作用在视图上,当用户对视图进行操作时,触发该触发器把相关的操作转换为对表进行操作。

  • 复合触发器:指的是对数据操作(DML)触发器当中的多种类型触发器进行复合,比如;一个触发器当中包含着after(或before)的行级触发器和after(或before)的语句级触发器,来完成一些更为复杂的操作。

三、触发器功能

Oracle触发器可以根据不同的数据库事件进行特定的调用触发器程序块,因此,它可以帮助开发者完成一些PL/SQL存储过程完成不了的问题,比如:

  • 允许or限制对表的修改

  • 自动生成派生列,比如自增字段(序列)

  • 强制数据一致性

  • 提供审计和日志记录

  • 防止无效的事务处理

  • 启用复杂的业务逻辑

但是不推荐在触发器当中写业务逻辑程序,因为这样对后期数据的维护将大大提高成本。

四、触发器语法

create [or replace] trigger 触发器名称 触发时间 触发事件on 表名[for each row]begin  PL/SQL语句块end;

语法解释:
触发器名称:触发器对象的名称,没有实际用途。
触发时间:指定触发器何时执行,有before和after两个值。
before:在数据库动作之前执行触发器
after:在数据库动作之后执行触发器
触发事件:指明哪些数据库动作会触发该触发器
insert 数据库插入时会触发该触发器
update 数据库更新时会触发该触发器
delete 数据库删除时会触发该触发器
表名:数据库触发器所在的表
for each row:对触发器的执行范围做限定,对表的每一行触发器执行一次,如果没有这个选项就是对整个表执行一次

五、触发器使用案例

案例1:向job1表中插入一条数据后输出 欢迎加入 语句

--准备工作:拷贝jobs表为job11表,案例1和案例2均在job1表中执行。CREATE TABLE JOB1 AS SELECT * FROM HR.JOBS;--创建触发器create or replace trigger trigger1 after inserton job1begin  dbms_output.put_line('祝您早日涨薪!');end;

触发器创建完成后,可向job1表插入一行数据验证效果。

--插入数据,触发触发器的执行insert into job1 values('ruirui','Prisident',15000,30000);

效果如下:

Oracle的触发器trigger如何使用

案例2:数据校验,不允许星期二和星期四向emp1表中插入/更新数据。

create or replace trigger trigger2 before insert or update on job1declare  v_day varchar2(20);begin  ---判断今天是否是星期二或星期四  select to_char(sysdate,'day') into v_day from dual;  ---判断  if v_day = '星期二' then    dbms_output.put_line('今天是星期二,不能插入/更新数据!');    raise_application_error(-20001,'今天是星期二,不能插入/更新数据!');  if v_day = '星期四' then    dbms_output.put_line('今天是星期四,不能插入/更新数据!');    raise_application_error(-20001,'今天是星期四,不能插入/更新数据!');  end if;  end if;end;

触发器创建完成后,可向job1表插入一行数据验证效果。

--插入数据,触发触发器的执行insert into job1 values('rui1','Prisident',15000,30000);

效果如下:

Oracle的触发器trigger如何使用

Oracle的触发器trigger如何使用

案例3:创建触发器,记录表的删除数据

--创建job1_log表用于记录job1表的删除记录create table job1_log  as select * from job1 where  1<>1;--创建触发器create or replace trigger trigger3 after delete on job1for each rowbegin  insert into job1_log values(:old.job_id,:old.job_title,:old.min_salary,:old.max_salary);  dbms_output.put_line('记录已经成功删除并记录到日志');end;

触发器创建完成后,可删除job1表一行数据验证效果。

--测试delete from job1 where job_id='ruirui';

效果如下:

Oracle的触发器trigger如何使用

Oracle的触发器trigger如何使用

案例4:创建触发器,记录表的更新数据

--创建日志记录表create table test_log(  l_user varchar2(15),  l_type varchar2(15),  l_date varchar2(20));--创建触发器create or replace trigger trigger4 after delete or insert or updateon job1declare  v_type test_log.l_type%type;begin  if deleting then    v_type := 'delete';    dbms_output.put_line('记录已经成功删除并记录到日志');  elsif inserting then    v_type := 'insert';    dbms_output.put_line('记录已经成功插入并记录到日志');  elsif updating then    v_type := 'update';    dbms_output.put_line('记录已经成功更新并记录到日志');  end if;  insert into test_log values(user,v_type,to_char(sysdate,'yyyy-mm-dd hh34:mi:ss'));end;

触发器创建完成后,可更新job1表中数据验证效果。

--测试insert into job1 values('rui1','Prisident',15000,30000);

Oracle的触发器trigger如何使用

update job1 set min_salary=20000 where job_id='rui1';

Oracle的触发器trigger如何使用

delete from job1 where job_id='rui1';

Oracle的触发器trigger如何使用

查询test_log表中记录如下:

select * from test_log;

Oracle的触发器trigger如何使用

案例5:创建触发器,在删除某条数据之前先在记录表插入该条数据

--创建job1_log表用于记录job1表的删除记录create table test1_log  as select * from job1 where  1<>1;--创建触发器create or replace trigger trigger5 before delete on job1for each row --行级触发器begin  insert into test1_log values(:old.job_id,:old.job_title,:old.min_salary,:old.max_salary);end;

触发器创建完成后,可更新job1表中数据验证效果。

--测试delete from job1 where job_id='rui2';commit;

查询test1_log表中记录如下:

select * from test01_log;

Oracle的触发器trigger如何使用

到此,相信大家对“Oracle的触发器trigger如何使用”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Oracle的触发器trigger如何使用

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Oracle的触发器trigger如何使用

本篇内容主要讲解“Oracle的触发器trigger如何使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Oracle的触发器trigger如何使用”吧!一、触发器定义Oracle触发器是使用者
2023-06-29

Oracle触发器trigger怎么使用

Oracle触发器(trigger)用于在指定的数据库操作发生时自动执行一段特定的代码,可以用于数据插入、更新或删除时执行特定的操作。以下是使用Oracle触发器的基本步骤:1. 创建一个触发器:```CREATE OR REPLACE T
2023-08-15

Oracle Trigger触发器的正确使用方法

Oracle Trigger是一种在数据库中定义的特殊对象,它可以在特定的数据库操作(如插入、更新或删除)发生时自动触发相关的操作。以下是Oracle Trigger的正确使用方法:1. 创建Trigger:使用CREATE TRIGGER
2023-09-23

mysql触发器trigger的使用案例

这篇文章主要介绍了mysql触发器trigger的使用案例,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。什么是触发器触发器是与表有关的数据库对象,在满足定义条件时触发,并执行
2023-06-14

MySQL的触发器trigger怎么使用

MySQL的触发器(trigger)可以在特定的数据库操作发生时自动执行一系列的SQL语句。触发器可以在插入、更新或删除数据时触发执行,可以用于实现数据的验证、复制或自动化处理等功能。以下是MySQL中触发器的使用方法:1. 创建触发器:使
2023-08-11

Java Flink窗口触发器Trigger怎么使用

这篇文章主要介绍“Java Flink窗口触发器Trigger怎么使用”,在日常操作中,相信很多人在Java Flink窗口触发器Trigger怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java
2023-07-02

MySQL数据库触发器trigger怎么使用

这篇文章主要讲解了“MySQL数据库触发器trigger怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MySQL数据库触发器trigger怎么使用”吧!一、基本概念触发器是一种特殊类
2023-07-02

Oracle行级触发器的使用

oracle行级触发器的使用1、创建触发器并使用dblin编程客栈k在插入时进行数据同步异库异表同步create or replace trigger triggerName --触发器名称after insert on table
2023-05-12

MySQL触发器如何使用

本文小编为大家详细介绍“MySQL触发器如何使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“MySQL触发器如何使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。MySQL—触发器将两个关联的操作
2023-07-05

Oracle DML触发器和DDL触发器怎么使用

今天小编给大家分享一下Oracle DML触发器和DDL触发器怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、概念
2023-07-05

oracle触发器怎么使用

oracle触发器是用于自动化数据操作的数据库对象,类型包括before、after、instead of、row和系统触发器。通过触发语法创建触发器,可指定触发条件和动作。触发器用例包括强制业务规则、自动填充数据、审核日志和维护数据完整性
oracle触发器怎么使用
2024-05-21

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录