1、这是oracle的规定,不能对执行触发器的表进行操作。
可以对new.xxx进行操作啊,
对于oracle行级触发器(for each row),不能对本表做任何操作,包括读取
原则:
在before insert触发器中,可以实现对本表的访问;
在after insert触发器中,不能实现对本表的访问;
在before/after update/delete触发器中,都不能实现对本表的访问
其实原因很简单,就是为了防止脏读
2、写oracle行级触发器时,不能操作本表,报"表 *** 发生了变化,触发器/函数不能读"的错误的解决办法
原因已经很明显了就是行级的触发器代码中不能操作该表,包括select,是挺郁闷的
当然解决方法就是要根据原因了,正因为限定了行级触发器的操作,只能选择表级的触发器了,但是在表级的触发器又不能获得:new和:old的值,那就只能采取两种触发器并用的方法了,并且还要包或者临时表加以辅助.
首先在行级触发器中将所需的,:new或者:old的值,写到包或者临时表中
然后在表级触发器中处理包或者临时表中已经写入的数据,操作成功后可以按照需求再删除临时表的数据.
3、 ORACLE 触发器
ORACLE产生数据库触发器的语法为:
create [or replace] trigger 触发器名 触发时间 触发事件
on 表名
[for each row]
pl/sql 语句
其中:
触发器名:触发器对象的名称。由于触发器是数据库自动执行
的,因此该名称只是一个名称,没有实质的用途。
触发时间:指明触发器何时执行,该值可取:
before---表示在数据库动作之前触发器执行;
after---表示在数据库动作之后出发器执行。
触发事件:指明哪些数据库动作会触发此触发器:
insert:数据库插入会触发此触发器;
update:数据库修改会触发此触发器;
delete:数据库删除会触发此触发器。
表 名:数据库触发器所在的表。
for each row:对表的每一行触发器执行一次。如果没有这一
选项,则只对整个表执行一次。
举例:下面的触发器在更新表auths之前触发,目的是不允许在
周末修改表:
create trigger auth_secure
before insert or update or delete //对整表更新前触发
on auths
begin
if(to_char(sysdate,'DY')='SUN'
RAISE_APPLICATION_ERROR(-20600,'不能在周末修改表auths');
end if;
end
- 大小: 31.3 KB
分享到:
相关推荐
总结以上知识点,Oracle触发器的执行顺序和功能主要围绕着行级触发器和语句级触发器的概念展开,它们根据触发器定义的BEFORE或AFTER,以及DML操作发生前后的不同阶段执行。触发器可以包含复杂的逻辑判断,并在满足...
在深入探讨《Oracle触发器与存储过程高级编程》这一主题之前,我们首先应当明确Oracle数据库在企业级应用中的核心地位。Oracle数据库以其强大的数据处理能力、高可用性和安全性,成为众多大型企业和组织首选的数据...
本节将深入探讨“Oracle触发器与存储过程高级编程”的相关知识。 **触发器(Triggers)** 触发器是一种数据库对象,它在特定的数据库事件(如INSERT、UPDATE或DELETE)发生时自动执行。通过定义触发器,我们可以...
Oracle触发器是数据库中的一个重要组成部分,它们允许开发者在特定的数据操作发生时...在开发过程中,理解并掌握这些知识点对于高效、无误地利用Oracle触发器至关重要,有助于提升数据库管理和应用程序的性能及稳定性。
### Oracle触发器调用存储过程 #### 知识点概览 1. **触发器基本概念** 2. **存储过程简介** 3. **触发器如何调用存储过程** 4. **示例代码详解** 5. **注意事项** 6. **自主事务(Autonomous Transaction)** 7. ...
以下是一些关于触发器的关键知识点: 1. **类型**:Oracle支持三种类型的触发器——行级触发器(处理单个行)、语句级触发器(处理整个SQL语句)和复合触发器(结合了行级和语句级触发器的特性)。 2. **创建...
在本课程中,重点讲解的是Oracle中的触发器和包的使用,这两者是数据库开发中的重要工具。 触发器(Trigger)是Oracle数据库中一种预定义的PL/SQL程序,它会在特定的数据库事件(如INSERT、UPDATE、DELETE)发生时...
综上所述,Oracle触发器是一种强大的工具,能够帮助开发者实现复杂的数据管理和维护任务。通过深入理解触发器的类型、事件和执行逻辑,可以更好地利用触发器来增强数据库系统的功能性和安全性。
本书重点阐述了Oracle数据库服务器的核心概念:数据库表,索引,表空间,约束,触发器,PL/SQL. 本书针对程序员而编著,掌握一定编程知识会对学习本书有所帮助,但不是必需的。
Oracle触发器是数据库管理系统中的一种重要机制,它允许在特定的数据库操作(如INSERT、UPDATE、DELETE)发生时自动执行一段PL/SQL代码。在Oracle数据库中,触发器被广泛用于实现业务规则、数据验证、审计跟踪等功能...
从提供的内容中,我们可以总结以下关于Oracle触发器的知识点: 1. 触发器的基本结构: 触发器的创建通常遵循以下基本结构: ```sql CREATE OR REPLACE TRIGGER trigger_name [BEFORE/AFTER] [INSERT/UPDATE/DELETE]...
Oracle触发器是数据库管理系统Oracle中的一种重要特性,它允许开发者在特定的数据操作(如INSERT、UPDATE、DELETE)发生时执行自定义的逻辑。本章详细介绍了触发器的基础知识及其在数据库管理和信息系统中的应用。 ...
根据提供的文件信息,本文将详细解释Oracle触发器的相关知识点,包括触发器的基本概念、类型以及在实际场景中的应用示例。 ### Oracle触发器基础 触发器是数据库管理系统中的一种存储过程,它会在特定的数据库事件...
Oracle触发器是数据库管理系统Oracle中的一种重要特性,它允许开发者在特定的数据操作(如INSERT、UPDATE、DELETE)之前或之后执行自定义的SQL代码或PL/SQL块。触发器是数据库层面的程序逻辑,用于自动执行某些任务...
Oracle Form 触发器的执行顺序 Oracle Form 是 Oracle E-Business Suite R12 中的一个...Oracle Form 触发器的执行顺序是一个非常重要的知识点,了解触发器的执行顺序可以帮助开发人员更好地理解和使用 Oracle Form。
总结以上知识点,Oracle触发器是数据库开发中的一个重要工具,可以用于自动化执行复杂的业务逻辑,提高数据完整性,以及实现数据库对象的自动维护。然而,开发人员在使用触发器时需要仔细设计,避免其可能带来的性能...
Oracle 触发器练习 本文档收录了多个 Oracle 触发器练习,涵盖了触发器的各种应用场景和技术细节。每个练习都提供了详细的代码实现和测试结果,帮助读者更好地理解和掌握触发器的使用。 一、触发器基本概念 ...