Oracle触发器-变异表触发器不能访问本表

1 CREATE OR REPLACE TRIGGER trgregisterpregroup
2   AFTER UPDATE
3   ON tblregisterusers
4   FOR EACH ROW
5     ……
6 END trgregisterpregroup;

对表tblregisterusers创建了触发器,这属于行级的触发器,可以有:OLD和;NEW数据

但是,不能再对变异表进行select操作,不然就会报异常

原因:

当对一个表创建行级触发器时,有下列两条限制:

1.不能读取或修改任何触发语句的变异表;
2.不能读取或修改触发表的一个约束表的PRIMARY  KEY,UNIQUE 或FOREIGN KEY关键字的列, 但可以修改其他列

解决方法:

但是这样又会遇到一个问题

解决办法,在末尾加上commit;

原文地址:https://www.cnblogs.com/zhuziyu/p/8426677.html

时间: 2024-10-28 23:51:17

Oracle触发器-变异表触发器不能访问本表的相关文章

Oracle 学习笔记 19 -- 触发器和包浅析(PL/SQL)

触发器是存放在数据库中的一种特殊类型的子程序.不能被用户直接调用,而是当特定事件或操作发生时由系统自己主动 调用执行.触发器不能接受參数.所以执行触发器就叫做触发或点火.Oracle事件指的是数据库的表进行的insert .update.delete操作或对视图进行类似的操作. 触发器是很多关系数据库系统都提供的一项技术.在Oracle系统里,触发器类似过程和函数,都有声明,运行和异常 处理过程的PL/SQL块. 触发器的组成: 触发事件:在何种情况下触发:比如:INSERT , UPDATE

oracle 学习笔记之触发器

说明 数据库触发器是一个与表相关联的.存储的PL/SQL程序.每当一个特定的数据操作语句(Insert,update,delete)在指定的表上发出时,Oracle自动地执行触发器中定义的语句序列. 触发器的类型 语句级触发器:在指定的操作语句操作之前或之后执行一次,不管这条语句影响了多少行 . 行级触发器(FOR EACH ROW):触发语句作用的每一条记录都被触发.在行级触发器中使用old和new伪记录变量, 识别值的状态. 触发器可用于:1)数据确认  2)实施复杂的安全性检查.3)做审计

一个通用的通过触发器实现的,可配置的表修改日志解决方案

在MIS系统中,系统审计功能是很重要的一部分,审计的一部分就是记录数据修改日志.记录数据修改日志有很多种实现方案,有通过后台程序实现的,在修改程序中增加日志代码,也有通过数据库实现的,使用触发器来记录修改日志.本方案采用第二种方案.这种方案的优点是无论你通过什么方式修改数据,都会记录下来,极少需要修改代码:缺点是需要应用程序配合,以便能知道是哪个应用系统的账号做的修改. 本方案的核心是,通过一个配置表,配置哪些表需要记录日志.修改哪些列的时候记录日志.然后根据配置信息,为每个表生成用于记录日志的

Oracle中序列及触发器使用

总结一下这次使用的序列和触发器,也把相应的一些操作用了一下.遇到的问题比较奇葩,仅供参考. 一.序列部分(网上的) 1.建立序列SEQUENCE create sequence user_seq increment by 1 start with 1 minvalue 1 maxvalue 9999999999999 nocache order; 语法: CREATE SEQUENCE s_id NOMAXVALUE NOCYCLE --INCREMENT BY 1    -- 每次加几个 --

Oracle学习笔记十三 触发器

简介 触发器是当特定事件出现时自动执行的存储过程,特定事件可以是执行更新的DML语句和DDL语句,触发器不能被显式调用. 触发器的功能: 1.自动生成数据 2.自定义复杂的安全权限 3.提供审计和日志记录 4.启用复杂的业务逻辑 创建触发器的语法 CREATE [OR REPLACE] TRIGGER trigger_name AFTER | BEFORE | INSTEAD OF [INSERT] [[OR] UPDATE [OF column_list]] [[OR] DELETE] ON

连接Oracle与Hadoop(4) Oracle使用OSCH访问Hive表

OSCH是Oracle SQL Connector for Hadoop的缩写,Oracle出品的大数据连接器的一个组件 本文介绍的就是如何使用OSCH从Oracle数据库直接访问Hive表 前提1:在Oracle数据库端,部署好HDFS客户端与OSCH软件,设置好环境变量 #JAVA export JAVA_HOME=/home/oracle/jdk1.8.0_65   #Hadoop export HADOOP_USER_NAME=hadoop export HADOOP_HOME=/hom

关于oracle的函数,存储过程,触发器,序列,视图,左右连接一些的应用 带案例

CREATE TABLE STUDENT( --创建学生表  ID NUMBER(10) PRIMARY KEY,   --主键ID  NAME VARCHAR2(20),  CLASSNAME VARCHAR2(20) --班级ID);CREATE SYNONYM STU FOR STUDENT; --给学生表STUDENT创建别名(同义词)INSERT INTO STUDENT VALUES(1,'Tom',1);INSERT INTO STUDENT VALUES(2,'Jack',1);

oracle的学习 第二节:创建数据表

学习内容: A.创建数据库和表空间 B.创建用户和分配权限 C.创建数据表 一.创建数据库和表空间 (一)SQL语言的基本概念 1.概念 高级的结构化查询语言:沟通数据库服务器和客户的重要桥梁. PL/sql语言是结构化的查询语言. 2.分类: 数据定义语言  :create  alter  drop 数据操作语言: insert update delete 数据控制语言:select (二)创建数据库的两种方式 方式一:图形界面: 方式二:create  Datebase命令方法.(常用) 具

触发器七(复合触发器)(学习笔记)

复合触发器 复合触发器是在Oracle 11g之后引入进来的一种新结构的触发器,复合触发器既是表级触发器又是行级触发器.在之前针对于不同级别的触发器,如果要在一张数据表上完成表级触发(BEFORE和AFTER)与行级触发(BEFORE和AFTER)则需要编写四个触发器才可以完成,而有了复合触发器之后,只需要一个触发器就可以定义完全部的四个功能 使用复合触发器可以捕获四个操作事件: 触发执行语句之前(BEFORE STATEMENT) 触发语句中的每一行发生变化之前(BEFORE EACH ROW

SpringAOP&&定时任务简单实现接口访问入表和定时任务接口重试

# SpringAOP&&定时任务简单实现接口访问入表和定时任务接口重试 # Spring aop Spring 定时任务 代理模式深化 1.表设计 2.Aop主要代码 @Aspect @Component public class AopUtils implements Ordered { //当前 private static final Logger logger = LoggerFactory.getLogger(AopUtils.class); public static Str