oracle 事务 数据伪列
在用户进行数据更新操作(DML)事务一定会起作用。
事务的出现会保证数据的完整性、一致性。在整个事务的处理过程之中主要使用两个操作命令:
· 事务的提交(COMMIT):是真正的向数据库之中发出更新指令;
· 事务的回滚(ROLLBACK):回滚到最初的状态。
一但用户发出了提交事务(commit)指令,那么所有的数据将被真实性的执行了更新操作。此时将无法使用 rollback
进行回滚。
在 Oracle 之中,每一个连接到数据库上的用户,都使用一个 session 的概念表示。每一个 Session 都拥有各自的事务
处理,这个也就是事务的隔离性。
那么如果说此时,两个 session 更新同一条数据呢?
范例:第一个 session 执行如下语句
UPDATE myemp SET sal=9000 WHERE empno=7499 ;
第一个 session 执行此语句的时候发现可以正常的提示完成,同时,此时并没有进行事务的提交或者是回滚。那么另
外一个 session 也发出了一条更新 7499 雇员的操作。
范例:第二个 session 执行如下语句
UPDATE myemp SET sal=9999 WHERE empno=7499 ;
发现此时执行之后,界面进入到了一个等待的状态。
行号:ROWNUM
在进行数据的显示时,用户可以通过 ROWNUM 这个伪列,动态的生成行的编号。
在 Oracle 里面 ROWNUM 主要有可以完成两个任务:
· 取得第一行数据;
· 取得前 N 行数据。
SELECT ROWNUM,empno,ename,job,hiredate FROM emp
WHERE deptno=10 AND ROWNUM=1 ; SELECT ROWNUM,empno,ename,job,hiredate FROM emp
WHERE ROWNUM<=10 ;
范例:数据的分页显示格式
SELECT * FROM (
SELECT 列 [别名] , 列 [别名] , ... , ROWNUM rn
FROM 表名称 [别名] , ...
WHERE ROWNUM<=currentPage*lineSize) temp
WHERE temp.rn>(currentPage - 1) * lineSize ;
行 ID:ROWID
现在每一行的记录都发现有自己的数据列,而除了这些数据列之外,还存在有每一行数据的唯一的物理地址,而这
个物理地址就只能够通过 ROWID 取得。
那么每一个 ROWID 数据都是包含有存储数据的,以:“AAAR3qAAEAAAACHAAC”为例做一个简单解释:
· “AAAR3q”:数据的对象编号;
· “AAE”:数据保存的相对文件编号;
· “AAAACH”:数据保存的块号;
· “AAC”:保存的数据行号。
数据库之中的所有数据都是在磁盘之中,保存,所以来讲,根据不同的数据会分配不同的空间,而 ROWID 就可以清
楚的记录这些空间的信息。
oracle 事务 数据伪列的更多相关文章
- Oracle的数据伪列(ROWNUM)
作者:Vashon 时间:20150414 数据库:Oracle11g 数据伪列(ROWNUM) *范例:查询前5条记录:select rownum,empno,job,hiredate,sal fr ...
- Oracle笔记(七) 数据更新、事务处理、数据伪列
一.数据的更新操作 DML操作语法之中,除了查询之外还有数据的库的更新操作,数据的更新操作主要指的是:增加.修改.删除数据,但是考虑到emp表以后还要继续使用,所以下面先将emp表复制一份,输入如下指 ...
- Oracle 中的伪列
昨天做了一个Oracle PL/SQL 相关的测试,其中有一道这样的题目: 下列那些是Oracle的伪列(ACD) A.ROWID B.ROW_NUMBER() C.LEVEL D.RO ...
- Oracle Schema Objects——伪列ROWID Pseudocolumn(ROWNUM、ROWID)
Oracle Schema Objects Oracle Schema Objects——Tables——Oracle Data Types Oracle伪列 在Oracle数据库之中为了实现完整的关 ...
- Oracle中ROWNUM伪列和ROWID伪列的用法与区别
做过Oracle分页的人都知道由于Oracle中没有像MySql中limit函数以及SQLServer中的top关键字等,所以只能通过伪列的方式去满足分页功能,在此,不谈分页方法,只从根本上去介绍这两 ...
- Oracle中的伪列
分页查询中,需要用到伪列rownum,代码如下: select * from (select rownum rn, name from cost where rownum <= 6) where ...
- Oracle面对“数据倾斜列使用绑定变量”场景的解决方案
1.背景知识介绍 2.构造测试用例 3.场景测试 4.总结 1.背景知识介绍 我们知道,Oracle在传统的OLTP(在线事务处理)类系统中,强烈推荐使用绑定变量,这样可以有效的减少硬解析从而 ...
- [Oracle11g] 通过伪列查询
oracle中的伪列默认第一行是1,所以可以选择<=rownum的方法选取,但是>是无法选取的.这时候需要固化伪列. 固化前可以这样查询:select * from 表名 where r ...
- oracle(sql)基础篇系列(三)——数据维护语句、数据定义语句、伪列
DML语句 insert 向表中插入新的记录 --三种插入方式 --(1)不写字段的名字,直接按照字段的顺序把值逐个往里插 insert into dept2 values(50,'DANAM ...
随机推荐
- 关于 eval 的报错 Uncaught ReferenceError: False is not defined
var obj ={'id': 16, 'name': '管理员', 'delflag': False, 'grade': 1000000.0}VM3614:1 Uncaught ReferenceE ...
- OpenGL学习--开发环境
1. VS2017 Professional安装 1.1. 下载 mu_visual_studio_professional_2017_x86_x64_10049787.exe 1.2. 双击开始安装 ...
- gearman入门初步
原文地址:http://blog.sina.com.cn/s/blog_5f54f0be0101btsi.html PHP 没有提供直接的并发功能.要实现并发,必须: function asy ...
- rman备份控制文件
rman备份控制文件分为两种情况. 1.自动备份需要配置configure controlfile autobackup on配置之后,控制文件和spfile会在每次rman备份之后自动备份contr ...
- 记录下使用iis7代理node.js写的网站程序
昨天晚上一个学弟的紧急求救,说了自己接的单子做了一个网站,使用了自己熟悉的技术——node.js+mongdb,但当看到部署环境惊呆了,是 windows+sqlserver.这些都不是关键,关键是服 ...
- 8 tensorflow修改tensor张量矩阵的某一列
1.tensorflow的数据流图限制了它的tensor是只读属性,因此对于一个Tensor(张量)形式的矩阵,想修改特定位置的元素,比较困难. 2.我要做的是将所有的操作定义为符号形式的操作.也就是 ...
- Ubuntu 16.04下 - vi编辑器使用【backspace】无法删除
参考:https://blog.csdn.net/leiwangzhongde/article/details/83339589
- leveldb源码分析--WriteBatch
从[leveldb源码分析--插入删除流程]和WriteBatch其名我们就很轻易的知道,这个是leveldb内部的一个批量写的结构,在leveldb为了提高插入和删除的效率,在其插入过程中都采用了批 ...
- Sql_从查询的结果集中分组后取最后有效的数据成新的结果集小记(待优化)
Dim sql As String = " SELECT xp.*, " sql = sql + " xf_owner.ownername, " sql = s ...
- Django 补充
在Django项目的外面操作这个Django内部的models: 当你创建Django项目的时候你在用的时候,你是在这个Django项目中使用的 那么你怎么在你的这个Django项目的外面使用这个D ...