欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

oracle 事务 数据伪列

程序员文章站 2022-12-24 09:12:18
在用户进行数据更新操作(DML)事务一定会起作用。 事务的出现会保证数据的完整性、一致性。在整个事务的处理过程之中主要使用两个操作命令: · 事务的提交(COMMIT):是真正的向数据库之中发出更新指令;· 事务的回滚(ROLLBACK):回滚到最初的状态。 一但用户发出了提交事务(commit)指 ......

在用户进行数据更新操作(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 就可以清
楚的记录这些空间的信息。