oracle 的伪列以与伪表 oracle 系统为了实现完整的关系数据库功能,系统专门提供了一组成为伪列(Pseudocolumn)的数据库列,这些列不是在建立对象时由我们完成的,而是在我们建立时由 Oracle 完成的。Oracle 目前有以下伪列:一、伪列: CURRVAL AND NEXTVAL 使用序列号的保留字 LEVEL 查询数据所对应的层级 ROWID 记录的唯一标识 ROWNUM 限制查询结果集的数量二、伪表DUAL 表该表主要目的是为了保证在使用 SELECT 语句中的语句的完整性而提供的。一般用于验证函数。例如:selectsysdate,to_char(sysdate,'yyyy-mm-dd HH24:mm:ss') from dualOracle 伪列 RowID一、什么是伪列 RowID?1、首先是一种数据类型,唯一标识一条记录物理位置的一个 id,基于 64 位编码的 18 个字符显示。2、未存储在表中,可以从表中查询,但不支持插入,更新,删除它们的值。二、RowID 的用途1,在开发中使用频率应该是挺多的,特别在一些 update 语句中使用更加频繁。所以oracle ERP 部份的视图都会加入 rowid 这个字段。 在一些 cursor 定义时也少不了加入 rowid。但往往我们在开发过程中,由于连接的表很多,再加上程序的复制,有时忽略了 rowid 对应的是那一个表中 rowid,所以有时过程出错, 往往花上很多时间去查错,最后查出来既然是 update 时带的 rowid 并非此表的 rowid,所以在发现很多次的错误时,重视 rowid 起来了,开发中一定要注意 rowid 的匹配2,能以最快的方式访问表中的一行。3,能显示表的行是如何存储的。4,作为表中唯一标识。三,RowID 的组成rowid 确定了每条记录是在 Oracle 中的哪一个数据对象,数据文件、块、行上。 ROWID 的格式如下: 数据对象编号 文件编号 块编号 行编号 OOOOOO FFF BBBBBB RRR 由 data_object_id# + rfile# + block# + row# 组成,占用 10 个 bytes 的空间, 32bit 的 data_object_id#, 10 bit 的 rfile#, 22bit 的 block#, 16 bit 的 row#. 所以每个表空间不能超过 1023 个 数据文件。四、RowID 的应用 1。准备数据: 当试图对库表中的某一列或几列创建唯一索引时, 系统提示 ORA-01452 :不能创建唯一索引,发现重复记录。 /*conn scott/tiger Create table empa as select * from emp; (为以下演示)插入重复记录--创建一个表createtable dupCityInfoasselect * from cityInfo--制造重复...