`

Oracle触发器总结

阅读更多

1.触发器定义:触发器是数据库中由一个时间触发的特殊的存储过程,他不是由程序条用也不是手工启动的。触发器的执行可以由对一个表的insert,delete, update等操作来触发,触发器经常用于加强数据的完整性约束和业务规则等等。

 

2.触发器作用:触发器可以对其他表进行查询,也可以包含复杂的SQL语句。他么主要用于强制服从复杂的业务规则或者要求。例如可以利用触发器根据客户当前的帐户状态来控制是否允许插入新的订单。触发器也可以用于强制引用完整性,以便在多个表中添加,删除或者更新数据时,保留这些表之间的关系。

 

3.触发器的功能:

1) 允许/限制对表的修改

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

3) 强制数据一致性

4) 提供审计和日志记录

5) 防止无效的事务处理

6) 启用复杂的业务逻辑

 

4.触发器创建语法:

DELIMITER |
CREATE TRIGGER `<databaseName>`.`<triggerName>`
< [ BEFORE | AFTER ] > < [ INSERT | UPDATE | DELETE ] >
ON <tableName>
FOR EACH ROW
BEGIN
–your sql
END |

 

5.触发器理解:每个触发器都是一个隐藏的存储过程。隐藏的代码对开发者很不友好。如果你正在看一段别人的程序,总觉得少了点什么,折腾半天原来还有些动作隐藏在触发器里!顺藤摸瓜去找了触发器,发现里面对其他表有DML,又有其他隐藏代码,是不是头很大?这种连锁触发增加了复杂性,很容易失控。起初我也做过这种东西,觉得系统布满了精巧的机关,很有成就感,后来才发现这对维护来说简直就是噩梦加陷阱。因为触发器是隐藏的,它不执行你也不知道。假如有个触发器编译失效,DML还是不声不响的照样成功了!存储过程就不会这样。触发器没有办法绕过。假如你有个产品正在跑,这时候需要补几条故障时间的历史数据,INSERT上的触发器有些动作是你不想要的,这就难办了。触发器还有MUTATING TABLE问题。很多人一看这问题就上自治事务,殊不知这是个馊主意。自治事务使得你看到的数据都是旧的,因为主事务所作的修改还未提交。多行的DML会多次触发,产生一大堆小事务,很容易发生死锁。在批量操作、多次触发到情况下,触发器的效率低,因为它相当于每次都执行一段PL/SQL. 往往可以把它转化为等价的几个SQL,效率提高很多。http://www.itpub.net/thread-1053701-1-1.html

 

分享到:
评论

相关推荐

    利用 Oracle 系统触发器防止误删除表操作

    ### 利用Oracle系统触发器防止误删除表操作 #### 背景介绍 在企业级应用中,数据库的安全性和稳定性至关重要。Oracle作为一款广泛使用的数据库管理系统,提供了丰富的功能来保障数据安全。其中,系统触发器是Oracle...

    oracle触发器执行顺序.pdf

    总结以上知识点,Oracle触发器的执行顺序和功能主要围绕着行级触发器和语句级触发器的概念展开,它们根据触发器定义的BEFORE或AFTER,以及DML操作发生前后的不同阶段执行。触发器可以包含复杂的逻辑判断,并在满足...

    Oracle触发器里调用Java程序

    总结起来,通过在Oracle触发器中调用Java程序,我们可以利用Java的强大功能来增强数据库的处理能力,实现更复杂的数据处理逻辑。这需要对Oracle的PL/SQL和Java编程都有一定的理解,以及对数据库安全策略的考虑。在...

    Oracle触发器详解

    ### Oracle触发器详解 在数据库管理系统中,Oracle触发器是一种特殊类型的存储过程,它自动执行对数据的操作,当特定事件发生时(如插入、更新或删除数据)在数据库表上执行。触发器可以用于实现复杂的数据完整性...

    oracle触发器调用存储过程

    ### Oracle触发器调用存储过程 #### 知识点概览 1. **触发器基本概念** 2. **存储过程简介** 3. **触发器如何调用存储过程** 4. **示例代码详解** 5. **注意事项** 6. **自主事务(Autonomous Transaction)** 7. ...

    oracle 触发器方式实现行ID自增加

    本文将深入探讨如何使用Oracle触发器来实现行ID的自增加。 首先,我们得了解什么是触发器。在Oracle中,触发器是一种数据库对象,它可以在特定的数据库操作(如INSERT、UPDATE或DELETE)发生时自动执行预先定义的...

    oracle触发器的创建和跨数据库查询.zip

    Oracle触发器是数据库对象...总结起来,这个压缩包文件的内容涵盖了Oracle触发器的创建方法,以及如何利用DB Link进行跨数据库查询和操作。理解并熟练掌握这些技术,对于维护复杂数据库系统和确保数据一致性至关重要。

    oracle触发器实现二维码

    总结起来,这个项目实现了将Java生成的二维码图片通过Oracle触发器转换为BLOB,并存储到数据库表中,这在需要在数据库中存储和检索二维码图像的场景下非常有用。同时,这也展示了Java和Oracle数据库的集成能力,以及...

    ORACLE触发器 案例

    摘要:本文介绍了oracle触发器的概念和类型,总结了oracle触发器在开发MIS中的应用,并提供了实例以供参考. 关键词:MIS 、触发器 oracle 1.引言 本人在做一个大型的MIS系统(前台用powerbuild工具,后台用oracle...

    Oracle触发器

    Oracle触发器是数据库管理系统Oracle中的一个重要特性,它允许在特定事件(如数据修改DML操作:INSERT、UPDATE或DELETE)发生时自动执行预定义的PL/SQL代码块。触发器可以用来实现复杂的业务规则,审计跟踪,或者在...

    oracle中记录用户登录信息的触发器的例子

    ### Oracle中记录用户登录信息的触发器实例解析 #### 一、背景介绍 在Oracle数据库管理中,确保数据安全是一项至关重要的任务。其中,记录用户的登录信息(如登录时间、用户名和客户端IP地址等)可以帮助管理员更...

    oracle创建触发器实例

    总结来说,这个Oracle创建触发器的实例展示了如何使用触发器进行权限控制和日志记录,同时提供了关于如何处理和阻止非预期的DDL操作的示例。这在大型企业系统中尤其重要,因为它们需要严格的数据安全性和审计追踪...

    oracle存储过程及触发器总结

    ### Oracle存储过程及触发器总结 #### 一、Oracle 存储过程概述 在Oracle数据库中,存储过程是一种预先编译好的SQL代码块,它可以接受输入参数、返回单个值或多个值,并能够调用其他存储过程。存储过程在数据库...

    Oracle触发器.pdf

    从提供的内容中,我们可以总结以下关于Oracle触发器的知识点: 1. 触发器的基本结构: 触发器的创建通常遵循以下基本结构: ```sql CREATE OR REPLACE TRIGGER trigger_name [BEFORE/AFTER] [INSERT/UPDATE/DELETE]...

    oracle触发器与存储过程高级编程

    1. 触发器定义:Oracle触发器是一种数据库对象,它在特定的数据库事件(如INSERT、UPDATE或DELETE)发生时自动执行。它们可以用来实施复杂的业务规则,确保数据的完整性和一致性。 2. 触发器类型: - 行级触发器:...

    oracle触发器和存储过程

    总结来说,Oracle触发器和存储过程是数据库开发中不可或缺的工具,它们提供了强大的功能来管理数据和实现业务逻辑。熟练掌握这两者,能帮助数据库管理员和开发者更有效地设计和维护高效、安全的数据库系统。

    创建Oracle触发器用于表中序列值自增长(Helloblock写作)

    ### 创建Oracle触发器用于表中序列值自增长 在Oracle数据库中,为了实现表中某个字段的自动递增功能,通常会使用序列(sequence)结合触发器(trigger)的方式来完成。这种方式不仅能够确保数据的一致性和完整性,...

    使用Java编写Oracle触发器的实现.pdf

    总结来说,Oracle触发器是实现数据库级别业务逻辑和完整性控制的强大工具,而使用Java编写触发器则增加了代码的灵活性和可维护性。开发者可以根据具体需求选择合适的触发器类型和实现方式,确保数据库操作符合设定的...

Global site tag (gtag.js) - Google Analytics