同一个表中的记录rowid是不是一定是递增的?

解决方案 »

  1.   

    不是的, 这是我的测试结果, 分两批插入数据, 每次24条, 下面
    AAARDaAAFAAAADgAAA 先插入的第一条数据的rowid
    AAARDaAAFAAAADeAAA 后插入的第一条数据的rowid
      

  2.   

    总体情况是这样,但不是全部是这样,这是oracle公司自己的说法
      

  3.   

    确切的说,当你是全新的数据库时,ROWID是递增的
    而当一旦有了删除动作,ROWID就不会全是递增的
      

  4.   

    这个问题,我也遇到过,当出现删除数据的时候,就不会是递增的。ROWID是一种物理地址的标识,我想应该与oracle内部的存储机制有很大的关系
      

  5.   

    我只知道rowID不是重复的,基本没有用过那个字段,哪个大侠知道有什么用吗??
      

  6.   

    select rowid  from emp;
    和 select rowid from person;这两个的ROWID号是一样的  不知道LZ明白了嘛?
      

  7.   

    Rowid :
    1.唯一标识表的一个列(但不唯一标识数据库的列,比如不同表的不同列可能有相同的Rowid)
    2.通过Rowid是最快的方式来访问一个列
    3.Rowid的类型是Rowid或URowid,但它不是实际储存在数据库中的,所以你不能update,
      delete,insert它
    4.当你在某些情况下重新插入或删除数据时,Rowid是会变化的,所以它是不可靠的,不应用它作为
      主键或者其他什么操作
      

  8.   

    14楼对ROWID的表述有问题 :1)rowid不是用来唯一标识表中的列的。它是用来唯一标识表中的数据行(即记录)。
    2)rowid的值是全库唯一的,是由:表空间标识+文件标识+对象标识+行标识 四部分组成的。
      

  9.   

    你把你查询的结果再SELECT rowid,...FORM SUBQUERY 看到的ROWID就不是很乱的物理地址。
      

  10.   


    不是的,rowid可以可以转换为一个物理存储上的物理地址。可以参考这个blog文
    http://www.inthirties.com/?p=543所以这里不见得是递增的。有可能以前的空block被重新写入新数据。