经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 数据库/运维 » Oracle » 查看文章
oracle 事务 数据伪列
来源:cnblogs  作者:xianting  时间:2019/3/26 8:39:34  对本文有异议

在用户进行数据更新操作(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 行数据。

  1. SELECT ROWNUM,empno,ename,job,hiredate FROM emp
  2. WHERE deptno=10 AND ROWNUM=1 ;
  3. SELECT ROWNUM,empno,ename,job,hiredate FROM emp
  4. WHERE ROWNUM<=10 ;
  1. 范例:数据的分页显示格式
  2. SELECT * FROM (
  3. SELECT [别名] , [别名] , ... , ROWNUM rn
  4. FROM 表名称 [别名] , ...
  5. WHERE ROWNUM<=currentPage*lineSize) temp
  6. WHERE temp.rn>(currentPage - 1) * lineSize ;

 

行 ID:ROWID

现在每一行的记录都发现有自己的数据列,而除了这些数据列之外,还存在有每一行数据的唯一的物理地址,而这
个物理地址就只能够通过 ROWID 取得。

那么每一个 ROWID 数据都是包含有存储数据的,以:“AAAR3qAAEAAAACHAAC”为例做一个简单解释:
· “AAAR3q”:数据的对象编号;
· “AAE”:数据保存的相对文件编号;
· “AAAACH”:数据保存的块号;
· “AAC”:保存的数据行号。
数据库之中的所有数据都是在磁盘之中,保存,所以来讲,根据不同的数据会分配不同的空间,而 ROWID 就可以清
楚的记录这些空间的信息。

原文链接:http://www.cnblogs.com/xianting/p/10594181.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号