Oracle12--变异表(五十四)
来源:互联网 发布:淘宝店铺生意不好 编辑:程序博客网 时间:2024/04/29 11:29
- 啥是变异表
- 定义:当一张数据表执行了更新操作后,就成为了一张变异表;
- 问题:如果在变异表上设置了行级触发器,就会出现ORA-04091的异常;
- 示例1:通过一个程序来说明此问题。定义一张数据表
DROP TABLE info PURGE ;
CREATE TABLE info(
id NUMBER ,
title VARCHAR2(50)
) ;
INSERT INTO info (id,title) VALUES (1,'www.mldnjava.cn') ;
- 为info表增加一个触发器
CREATE OR REPLACE TRIGGER info_trigger
BEFORE INSERT OR UPDATE OR DELETE
ON info
FOR EACH ROW
DECLARE
v_infocount NUMBER ;
BEGIN
SELECT COUNT(id) INTO v_infocount FROM info ;
END ;
/
- 执行更新操作
UPDATE info SET id=2 ;
运行结果:
错误报告:
SQL 错误: ORA-04091: 表 SS.INFO 发生了变化, 触发器/函数不能读它
ORA-06512: 在 "SS.INFO_TRIGGER", line 4
ORA-04088: 触发器 'SS.INFO_TRIGGER' 执行过程中出错
- 该错误,在没有触发器的情况下是不会发生的,但如果设置了行级触发器,则表示每次当表被修改时都会由于每行的更新操作被触发,直到修改操作之前触发器都无法看到数据表的这些改变;
- 虽然可以继续使用":new"和":old"两个标识符,但是不能读取到表的状态,就会出现ORA-04091异常;
阅读全文
0 0
- Oracle12--变异表(五十四)
- Oracle12
- 变异表
- 变异表的问题
- 变异表的问题
- oracle中变异表触发器的处理。
- 在trigger中如何操作变异表
- oracle中变异表处理办法
- 行级触发器相关的变异表
- ORA-04091变异表 ora-00060
- plsql连接oracle12
- Oracle12--DDL触发器(五十七)
- Oracle12 数据字典小结
- 包含变异表(mutating table)的触发器
- Oracle中变异表(ORA-04091)处理方法两则
- 三个触发器解决变异表错误(ORA-04091)
- 多项式变异
- 变异系数
- oracle union 注意事项
- Android之Handler的使用
- 重构,第一个案例(三)
- MUi-个人整理(图片自动轮播 上、下拉刷新 点击事件)
- ROS基础操作
- Oracle12--变异表(五十四)
- linux搭建redis集群测试
- 计蒜客 蒜头君开公司(全排列)
- HTTP详解--请求首部字段(十)
- web登陆界面测试
- 计算机图形学
- Ajax 配合node js multer 实现文件上传
- hihocoder 编程练习赛21
- 基于Java技术的大型网站架构设计方案