Oracle ROWID said在表中是唯一的。我不明白同一个集群中存储的两个不同表的两行如何具有相同的rowid,因为ROWID format的最后三个字符表示数据库块中的行号?
我知道群集表中的行是持久存储在同一个数据库块中,但由于ROWID包含行号,不应区分数据库块中的两行吗?
答案 0 :(得分:1)
很简单。因为聚簇表的“友好”行一起存储在块中,这意味着您可以拥有相同的rowid。
在下面的图片中(来自frontiernet),第一行的行有rownumber 1,第一行的行有rownumber 1.这是第一次出现。
在此之后我们有了emp 2,emp 3 ...在这个部门的所有emps之后,如果有足够的空间,你有第二行为dept但是他的rowid在前一个部门遇到了emp 2。
等等。
这是因为rowid中的行号是相对于其表和当前块的。
答案 1 :(得分:0)
通常,rowid值唯一标识数据库中的行。但是,同一群集中存储在一起的不同表中的行可以具有相同的rowid。
结帐:http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/pseudocolumns008.htm