ORACLE幻读(一)
来自剑破冰山。
oracle在进行数据处理时,如果通过触发器进行了唯一性的约束控制。
在打开两个session 对话框时,就可能会出现幻读的现象。
在emp2表上建立如下触发器:
CREATE OR REPLACE TRIGGER TRI_EMP2_UNIQENAME
BEFORE INSERT OR UPDATE
OF ENAME
ON EMP2
REFERENCING NEW AS New OLD AS Old
FOR EACH ROW
DECLARE
N SIMPLE_INTEGER:=-1;
BEGIN
SELECT COUNT(*) INTO N FROM EMP2 WHERE ENAME=:NEW.ENAME;
IF N>0 THEN
RAISE_APPLICATION_ERROR(-20003, 'ENAME '||:NEW.ENAME||' EXISTS!');
END IF;
EXCEPTION
WHEN OTHERS THEN
-- Consider logging the error and then re-raise
RAISE;
END TRI_EMP2_UNIQENAME;
在session1会话中插入数据后
在会话2session2中也可以插入,这是因为oracle有会话隔离的特性。
在session1 尚未提交之前
分别提交之后:
可以通过约束来避免这样的情况,仅针对此类约束,其他情况需要根据情况来处理。
session1中插入之后
session2(右侧)插入之后会hang住,也就是说必须等待session1的执行commit或者rollback之后session2才会继续。
如果session1 commit,那么因为违反约束,session2会直接报错。
ORACLE幻读(一)相关推荐
- oracle 脏读,脏读 不可重复读 幻读
序言 脏读.不可重复读.幻读这几个概念开始接触和学习的时候是在大学学习数据库系统的时候,那时候对这几个专业名词的理解停留在概念文字上,并没有真正使用过实践中,最近工作中涉及到这几个概念方面的知识,就来 ...
- oracle、mysql、sqlserver的对比数据库引擎的对比与选型InnoDB解决幻读
1. 所属公司: MySQL是由瑞典MySQL AB公司开发,目前属于 Oracle 旗下产品: Oracle是由美国ORACLE公司(甲骨文)开发的一组核心软件产品: SqlServer是由Micr ...
- oracle数据库脏读,图解数据库脏读、不可重复读、幻读
概述 分享之前关于数据库脏读.不可重复读.幻读的相关笔记,也做个备忘! 如果没有事务隔离,会出现什么样的情况? 假设我们现在有这样一张表(T),里面记录了很多牛人的名字,我们不进行事务的隔离看看会发生 ...
- mysql 事务隔离规范_MySQL事务隔离级别以及脏读、幻读、不可重复读示例
事务的隔离性 MySQL是一个客户端/服务器架构的软件,对于同一个服务器来说,可以有若干个客户端与之连接,每个客户端与服务器连接上之后,就可以称之为一个会话(Session).每个客户端都可以在自己的 ...
- InnoDB解决幻读的方案--LBCCMVCC
最近要在公司内做一次技术分享,思来想去不知道该分享些什么,最后在朋友的提示下,准备分享一下MySQL的InnoDB引擎下的事务幻读问题与解决方案--LBCC&MVCC.经过好几天的熬夜通宵,终 ...
- 脏读、幻读和不可重复读 + 事务隔离级别
丢失更新:两个事务同时更新一行数据,最后一个事务的更新会覆盖掉第一个事务的更新,从而导致第一个事务更新的数据丢失,这是由于没有加锁造成的: 1. 脏读 :脏读就是指当一个事务正在访问数据,并且对数据进 ...
- Mysql加锁过程详解(2)-关于mysql 幻读理解
Mysql加锁过程详解(1)-基本知识 Mysql加锁过程详解(2)-关于mysql 幻读理解 Mysql加锁过程详解(3)-关于mysql 幻读理解 Mysql加锁过程详解(4)-select fo ...
- mysql幻读和不可重复读的区别_面试官:MySQL的可重复读级别能解决幻读吗
Java面试笔试面经.Java技术每天学习一点 Java面试 关注不迷路 作者:宁愿. 来源:https://juejin.im/post/5c9040e95188252d92095a9e 引言 之前 ...
- 数据库事务隔离级别-- 脏读、幻读、不可重复读(清晰解释)
一.数据库事务隔离级别 数据库事务的隔离级别有4个,由低到高依次为Read uncommitted .Read committed .Repeatable read .Serializable ,这四 ...
最新文章
- 数据统计脚本(汇总)
- 英特尔杀入游戏显卡市场:3000元档位,支持光追和AI超分辨率,挑战AMD英伟达...
- js date 加一天_开发效率创新高,只因收下了这波 JS 操作
- oracle 日志注册,Oracle日常维护中管理用户以及重做日志文件的方法
- Sybase identity 字段
- CF1042C Array Product
- 手把手Java爬虫教学 - 1. 了解爬虫
- 有关lodop.js和CLodop服务
- 基于单片机的GPS开发 (four) GPS基础知识
- html事件页面切换表格,表格页面切换快捷键 可以使用快捷键CTRL+TAB键
- maven-publish插件的使用笔记
- 提示计算机未安装flash,win10系统提示未安装Flash的解决方法
- windows搭建RN环境
- 关于《十天学会AVR单片机》的教程头文件AVR_PQ1A.h
- 星巴克——starbuck
- word 标尺排版使用技巧
- nopi设置excel单元格的格式汇总
- GoLang之schedule 循环如何启动(10)
- 利用Arduino uno控制24BYJ-48电机正反转停止( 不使用步进库实现方法二)
- Django2.2框架小白项目心得(一)