问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Oracle数据库中有关触发器问题

发布网友 发布时间:2023-01-02 11:00

我来回答

1个回答

热心网友 时间:2023-10-09 13:35

  触发器是一种特殊类型的存储过程 它不同于存储过程 触发器主要是通过事件进行触发而被执行的 触发器的触发事件分可为 类 分别是DML事件 DDL事件和数据库事件 而存储过程可以通过存储过程名字而被直接调用 当对某一表进行诸如UPDATE INSERT DELETE 这些操作时 SQL Server 就会自动执行触发器所定义的SQL 语句 从而确保对数据的处理必须符合由这些SQL 语句所定义的规则

  触发器是特定事件出现的时候 自动执行的代码块 类似于存储过程 但是用户不能直接调用他们

  触发器功能

   允许/*对表的修改

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

   强制数据一致性

   提供审计和日志记录

   防止无效的事务处理

   启用复杂的业务逻辑

  触发器种类

  触发器的种类可划分为 种 数据操纵语言(DML)触发器 替代(INSTEAD OF)触发器 数据定义语言(DDL)触发器 数据库事件触发器

  数据操纵语言(DML)触发器 简称DML触发器 是定义在表上的触发器 创建在表上 由DML事件引发的触发器 编写DML触发器时的两点要素是 确定触发的表 即在其上定义触发器的表 确定触发的事件 DML触发器的触发事件有INSERT UPDATE和DELETE三种;替代触发器 简称INSTEAD OF触发器 创建在视图上 用来替换对视图进行的删除 插入和修改操作; 数据定义语言(DDL)触发器 简称DDL触发器 定义在模式上 触发事件是数据对象的创建和修改;数据库事件触发器 定义在整个数据库或模式上 触发事件是数据库事件

  ORACLE产生数据库触发器的语法为

  CREATE [OR REPLACE] TRIGGER 触发器名

  {BEFORE|AFTER|INSTEAD OF} 触发事件 [OR 触发事件 ]

  ON 表名

  WHEN 触发条件

  [FOR EACH ROW]

  DECLARE

  声明部分

  BEGIN

  主体部分

  END;

  其中

  触发器名 触发器对象的名称 由于触发器是数据库自动执行的 因此该名称只是一个名称 没有实质的用途 一个触发器可由多个不同的数据操纵语言操作触发 在触发器中 可用INSERTING DELETING UPDATING谓词来区别不同的数据操纵语言操作 这些谓词可以在IF分支条件语句中作为判断条件来使用

  触发时间 指明触发器何时执行 该值可取 触发的时间有BEFORE和AFTER两种 分别表示触发动作发生在DML语句执行之前和语句执行之后 确定触发级别 有语句级触发器和行级触发器两种 语句级触发器表示SQL语句只触发一次触发器 行级触发器表示SQL语句影响的每一行都要触发一次

  Before 表示在数据库动作之前触发器执行;在SQL语句的执行过程中 如果存在行级BEFORE触发器 则SQL语句在对每一行操作之前 都要先执行一次行级BEFORE触发器 然后才对行进行操作 如果存在行级AFTER触发器 则SQL语句在对每一行操作之后 都要再执行一次行级AFTER触发器

  after 表示在数据库动作之后出发器执行 如果存在语句级AFTER触发器 则在SQL语句执行完毕后 要最后执行一次语句级AFTER触发器

  触发事件 指明哪些数据库动作会触发此触发器 指INSERT DELETE或UPDATE事件 事件可以并行出现 中间用OR连接;

  insert 数据库插入会触发此触发器;

  update 数据库修改会触发此触发器;

  delete 数据库删除会触发此触发器

  表 名 数据库触发器所在的表

  for each row 表示触发器为行级触发器 省略则为语句级触发器 对表的每一行触发器执行一次

  触发器的创建者或具有DROP ANY TIRGGER系统权限的人才能删除触发器 删除触发器的语法如下

  DROP TIRGGER 触发器名

  可以通过命令设置触发器的可用状态 使其暂时关闭或重新打开 即当触发器暂时不用时 可以将其置成无效状态 在使用时重新打开 该命令语法如下

  ALTER TRIGGER 触发器名 {DISABLE|ENABLE}

  其中 DISABLE表示使触发器失效 ENABLE表示使触发器生效

  同存储过程类似 触发器可以用SHOW ERRORS 检查编译错误

  如果有多个触发器被定义成为相同时间 相同事件触发 且最后定义的触发器是有效的 则最后定义的触发器被触发 其他触发器不执行 触发器体内禁止使用MIT ROLLBACK SAVEPOINT语句 也禁止直接或间接地调用含有上述语句的存储过程 定义一个触发器时要考虑上述多种情况 并根据具体的需要来决定触发器的种类

  触发器的作用

  触发器的主要作用就是其能够实现由主键和外键所不能保证的复杂的参照完整性和数据的一致性 除此之外 触发器还有其它许多不同的功能

  ( ) 强化约束(Enforce restriction)

  触发器能够实现比CHECK 语句更为复杂的约束

  ( ) 跟踪变化Auditing changes

  触发器可以侦测数据库内的操作 从而不允许数据库中未经许可的指定更新和变化

  ( ) 级联运行(Cascaded operation)

  触发器可以侦测数据库内的操作 并自动地级联影响整个数据库的各项内容 例如 某个表上的触发器中包含有对另外一个表的数据操作(如删除 更新 插入)而该操作又导致该表上触发器被触发

  ( ) 存储过程的调用(Stored procere invocation)

  为了响应数据库更新触 发器可以调用一个或多个存储过程 甚至可以通过外部过程的调用而在DBMS( 数据库管理系统)本身之外进行操作

  由此可见 触发器可以解决高级形式的业务规则或复杂行为*以及实现定制记录等一些方面的问题 例如 触发器能够找出某一表在数据修改前后状态发生的差异 并根据这种差异执行一定的处理 此外一个表的同一类型(INSERT UPDATE DELETE)的多个触发器能够对同一种数据操作采取多种不同的处理

  总体而言 触发器性能通常比较低

lishixin/Article/program/Oracle/201311/18340
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
抖音弹幕怎么关掉?怎么关闭抖音弹幕? 惠普LaserJet P3005D是否支持B5纸的双面打印? word打印出图片总是缺一部分怎么办-word打印图片不完整怎么解决_百度... 理想one哪里产的车辆? 抚州抚州ONE在哪里? one地址在哪里? 如何在图片上写字(如何在图片上添加文字) 网商贷为什么钱没到账 高级经济师职称怎么评 高级经济师需要评审吗 罗定鱼腐如何煮好吃 二次函数有解是什么意思? 求2016年发行的英国动画片《反叛的童谣》免费在线百度资源 炖鸭肉怎么做 对下列句子中修辞手法的理解错误的一项是 tct检查是什么能确定是癌吗 人生目的在人生实践中具有重要作用,对这句话理解错误的是( )。 华为G7刷机后otg无反应在设置/全部设置/otg可以开启关闭但插入U盘文件管理/本地里木有USB盘otg功能不能用 下面对句子的理解错误的是:A.? debian语句如何查IP 对大同理解错误的句子 卧虎藏龙的丐帮全技能数据解析 计算思维最根本的内容,即其本质是自动化和( ) 债券有没有风险啊? 深圳社保医保账户余额 淘宝上如何追加评论 ? 科沃斯扫地机器人怎样复位 腊肠犬不能吃什么东西 腊肠犬不能吃的食物介绍 腊肠狗不能吃什么 oppor9s换电池后返回键失灵是什么情况? 用苹果手机备忘录编辑时不小心将原文档覆盖了,如何找回? 你对清明节的认知有多少 一加8t怎么隐藏应用 一加系统更新后隐藏空间在哪? 长期食用隔夜菜的危害有哪些 虎鲸攻击人吗 子夜漏风醉芊华是什么歌 扫二维码加会员下单是()模式的应用 为什么You should study hard的基本句型是 S+vi 调解是什么 我的电视是创维的 我用HDMI连接电脑和电视为什么显示无信号 玩游戏32寸和27寸哪个比较合适 信用卡还款司法确认是什么意思 茜多塞丝和丽莎蕾现实谈过恋爱吗 同心难改和看不见的世界拍摄时间 同心难改和看不见的世界中两个主角现实中在一起了吗(丽莎·蕾(Lisa Ray),茜多·塞丝(She 丽莎蕾和茜多塞丝跳舞的背景音乐 茜多塞丝和丽莎在一起过吗 司法确认程序什么时候最新修订的 怎么出版教材