什么是ROWID了Oracle / SQL数据类型? 如何保存这个值?
Answer 1:
下面的链接解释什么ROWID数据类型是- ROWID数据类型
ROWID存储为psuedocolumn 。
Answer 2:
的ROWID(因为Oracle8中称为扩展ROWID,直到Oracle7中现在被称为限制ROWID)存储/编码行的物理位置。
的(扩展)ROWID编码(十六进制格式)以下字段:OBJID(行属于对象的唯一ID),该TABLESPACE内FILENO(相对文件数,其中所述对象被创建,所述块编号(相对块在文件中数),ROWNUM(该行的块内的相对数)表征。
的(受限制的)ROWID仅含FILENO(在数据库中相对文件数),块编号和ROWNUM(如在exteded ROWID)和无OBJID。
在任何给定时间,ROWID唯一编码在数据库中的行(也许除了共享相同ROWID集群的故事)。 ROWID的可能改变(由于数据库的重组),也可以重新使用(例如删除和插入,新行可能会重新使用ROWID后)。 还导入/导出表将重新分配新的ROWID对表。
需要注意的是FILENO是不是在扩展ROWID格式每个数据库一定是唯一的,但由于扩展格式还包含OBJID(唯一标识该表对象的片段存储在表空间),我们可以发现一个独特的文件。
块编号是每个数据库文件独特的,ROWNUM是每个数据库块是唯一的。
例外:索引组织表 - ROWID不能准确定位块由于索引重组(叶块的运动)。
ROWID的可能因数据库重组操作。
Answer 3:
一个rowid数据类型存储与表行的磁盘位置信息。 他们还唯一标识表中的行。 该ROWID数据类型被存储为一个十六进制。
因此,十六进制字符串表示的表中的行的唯一地址。
文章来源: Datatype of ROWID in Oracle/SQL