Oracle触发器的分类和使用

摘要:在Oracle中,触发器是一种特殊的存储过程,它在发生某种数据库事件时由Oracle 系统自动触发。触发器通常用于加强数据的完整性约束和业务规则等,对于表来说,触发器可以实现比CHECK约束更为复杂的约束。本文介绍了Oracle触发器的概念,功能,优缺点,组成等方面。详细解读了Oracle触发器在各方面的应用并配合相关实例。

关键字:Oracle、触发器、介绍、应用

一、触发器的介绍

1.1 触发器的概念

在Oracle中,触发器是一种特殊的存储过程,它在发生某种数据库事件时由Oracle系统自动触发发器,通常用于加强数据的完整性约束和业务规则等。

触发器与存储过程的区别在于:存储过程是由用户或应用程序显式调用的,而触发器是不能被直接调用的,而是由一个事件来启动运行。即触发器是当某个时间发生时自动地隐式运行。

1.2 触发器的功能

●允许/限制对表的修改

●自动生成派生列,比如自增字段

●强制数据一致性

●提供审计和日志记录

●防止无效的事务处理

●启用复杂的业务逻辑

1.3 触发器的优缺点

优点:触发器可通过数据库中的相关表实现级联更改,不过,通过级联引用完整性约束可以更有效地执行这些更改。触发器可以强制比用CHECK 约束定义的约束更为复杂的约束。与CHECK 约束不同,触发器可以引用其它表中的列。例如,触发器可以使用另一个表中的SELECT 比较插入或更新的数据,以及执行其它操作,如修改数据或显示用户定义错误信息。触发器也可以评估数据修改前后的表状态,并根据其差异采取对策。一个表中的多个同类触发器(INSERT、UPDA TE 或DELETE)允许采取多个不同的对策以响应同一个修改语句。

缺点:触发器功能强大,轻松可靠地实现许多复杂的功能,但是它也具有一些缺点那就是由于我们的滥用会造成数据库及应用程序的维护困难。在数据库操作中,我们可以通过关系、触发器、存储过程、应用程序等来实现数据操作。同时规则、约束、缺省值也是保证数据完整性的重要保障。如果我们对触发器过分的依赖,势必影响数据库的结构,同时增加了维护的复杂程序。

1.4 触发器的组成

oracle中触发器只能用于表吗,Oracle触发器的分类和使用相关推荐

  1. oracle恢复drop建的表首次,Oracle中Drop,Delete,Truancate表恢复

    Oracle中Drop,delete,truancate表恢复 oracle中,常常会由于一些失误导致表的删除,以下是我写的一些表恢复的方法. 闪回模式得满足条件(启用闪回区和启用归档): 1.检查是 ...

  2. 创建emp表 oracle,Oracle中创建和管理表详解

    Oracle中创建和管理表详解 更新时间:2013年08月01日 15:44:16   作者: 以下是对Oracle中的创建和管理表进行了详细的分析介绍,需要的朋友可以过来参考下 SQL> /* ...

  3. oracle 其他用户表主键,Oracle中查看所有的表,用户表,列名,主键,外键

    在Oracle中查看所有的表: select * from tab/dba_tables/dba_objects/cat; 看用户建立的表 : select table_name from user_ ...

  4. 怎么查看oracle数据库表的主键,Oracle中查看所有的表,用户表,列名,主键,外键...

    在Oracle中查看所有的表: select * from tab/dba_tables/dba_objects/cat; 看用户建立的表 : select table_name from user_ ...

  5. Oracle中如何查询一个表的所有字段名和数据类型

    Oracle中如何查询一个表的所有字段名和数据类型 查询语法 select A.COLUMN_NAME,A.DATA_TYPE from user_tab_columns A where TABLE_ ...

  6. oracle查询列属性,Oracle中查看所有的表,列,属性,…

    在Oracle中查看所有的表: select * from tab/dba_tables/dba_objects/cat; 看用户建立的表 :  select table_name from user ...

  7. oracle查表字段长度,oracle中查询某张表中的字段名,字段类型,字段长度等信息...

    oracle中查询某张表中的字段名,字段类型,是否为空,字段长度等信息 --更改某张表的字段类型长度 alter table bill_info modify IDCARD VARCHAR2 (30) ...

  8. oracle中exist什么意思,oracle中not exists 是什么意思 , oracle数据库中exists的作用

    导航:网站首页 > oracle中not exists 是什么意思 , oracle数据库中exists的作用 oracle中not exists 是什么意思 , oracle数据库中exist ...

  9. 资源放送丨《Oracle中为什么没有Double Write?Oracle支持原子写吗?》PPT视频

    点击上方"蓝字" 关注我们,享更多干货! 前段时间,墨天轮邀请数据库资深专家 李真旭(Roger) 老师分享了<Oracle中为什么没有Double Write?Oracle ...

最新文章

  1. jQuery hash
  2. 数据库------求职必看
  3. android点击事件禁用,android-禁用所有视图的触摸事件
  4. HTTPS连接的前几毫秒发生了什么
  5. Change FZU - 2277(线段树+dfs序)
  6. JEPF 3.1.3 发布,我们的软件机床
  7. Spring boot 第一章 Spring发展历史
  8. 基于 Gitlab 交付 Go 程序的 Docker 镜像
  9. mysql修改表、字段、库的字符集
  10. 电商系统中商品模型与类目体系设计
  11. cuda驱动版本显卡对应关系
  12. linux/unix系统下IOZONE/iozone磁盘性能测试工具方法
  13. 微信小程序 13 排行榜的编写
  14. CVE-2017-0143(远程溢出)漏洞复现
  15. 全网最详细!vue中使用flv.js 播放直播监控视频流
  16. 为什么说学web前端是IT互联网时代的不二选择?
  17. 小米路由器局域网设备ping不通
  18. 微信二维码活码制作管理系统源码+独立版网站
  19. SQL 7种SQL JOINS的实现
  20. c语言之 杨辉三角

热门文章

  1. .net core 并发下的线程安全问题
  2. Abp框架准备加入.NET Foundation
  3. .NET Core中的性能测试工具BenchmarkDotnet
  4. 实体类的动态生成(三)
  5. .net core在网关中统一配置Swagger
  6. asp.net core mvc剖析:KestrelServer
  7. Xamarin的坑 - 绑定(二) - 高德iOS SDK(.Framework)绑定的一些事
  8. git stash参数介绍
  9. java java 大端_Java 大小端转换
  10. Android之用netcfg命令获取手机虚拟网卡tun0的信息