sql中的唯一编号,在ORACLE中大约相当于sequenceORACLE把ROWID作为B-树和其内部算法标示ROW的唯一标示。   
在ORACLE8以前的版本中,ROWID标示FILE、BLOCK、ROW NUMBER,只用一个数字代表FILE号。   
在ORACLE8中,一个DATAFILE有两个数字代表:   
一个绝对值,是整个数据库唯一的。可以看DBA_DATA_FILES中的FILE_ID。   
一个相对值,在TABLESPACE中是唯一的,可以看DBA_DATA_FILES中的RELATIVE_   
FNO。   新的ROWID使用相对值,所以必须存放SEGMENT的标示,否则就会混淆。所以ORACLE8在ROWID中加入对象的SEGMENT号,
用来标示TABLE或者PARTITION。

解决方案 »

  1.   

    那ROWID能不能同SQL SERVER里面的自动编号一样作为主键使用呢?
      

  2.   

    rowid 代表数据存储的物理地址. 就象邮递员送信时要找的家庭地址一样:
      

  3.   

    [Q]ROWID的结构与组成 
    [A]8以上版本的ROWID组成 
    OOOOOOFFFBBBBBBRRR 
    8以下ROWID组成(也叫受限Rowid) 
    BBBBBBBB.RRRR.FFFF 
    其中,O是对象ID,F是文件ID,B是块ID,R是行ID 
    如果我们查询一个表的ROWID,根据其中块的信息,可以知道该表确切占用了多少个块,进而知道占用了多少数据空间(此数据空间不等于表的分配空间) ROWID不是实际的列,所以不能做主键,看了上面的描述你清楚了
      

  4.   

    rowid可能有重复,所以不能作为主键使用!
      

  5.   

    rowid可能有重复,所以不能作为主键使用!--不赞成上面.在oracle系统中rowid是存储数据的物理地址,是不可能有重复的.就象地球上不会有任何两点的坐标是相同的一样.
      

  6.   

    rowid是存储数据的物理地址看一下组成原理里的物理地址的概念
    就差不多知道是rowid是怎么一回事了。
      

  7.   

    SQL SERVER 里面的自动编号,在这里可以用sequence代替