研究原文地址: http://www.laozizhu.com/view.jsp?articleId=48
Oracle的RowId能唯一的标识一个数据行吗?我们通过RowId就能找到这个数据属于哪个表格的哪个数据?测试结果是:不能,多个表格的数据可能有相同的rowId.
基于另一个测试Cluster的文章【 Oracle的索引聚簇表(cluster)测试】,我们在那个结果的基础上,运行下面的语句,会得到这样的结果
SQL> select rowid from emp;
ROWID
------------------
AAAM2yAABAAAO06AAA
AAAM2yAABAAAO06AAB
AAAM2yAABAAAO06AAC
AAAM2yAABAAAO06AAD
AAAM2yAABAAAO06AAE
AAAM2yAABAAAO06AAF
AAAM2yAABAAAO06AAG
AAAM2yAABAAAO06AAH
AAAM2yAABAAAO06AAI
AAAM2yAABAAAO06AAJ
AAAM2yAABAAAO06AAK
ROWID
------------------
AAAM2yAABAAAO06AAL
AAAM2yAABAAAO06AAM
AAAM2yAABAAAO06AAN
已选择14行。
SQL> select rowid from dept;
ROWID
------------------
AAAM2yAABAAAO06AAA
AAAM2yAABAAAO06AAB
AAAM2yAABAAAO06AAC
AAAM2yAABAAAO06AAD
SQL> select rowid from emp
2 intersect
3 select rowid from dept;
ROWID
------------------
AAAM2yAABAAAO06AAA
AAAM2yAABAAAO06AAB
AAAM2yAABAAAO06AAC
AAAM2yAABAAAO06AAD
可见,这4个rowId在2个表格里面是相同的,我们不能rowId直接判断出他到底是属于哪个表格的、
Oracle RowId 特性解析
本文通过实验证明了Oracle数据库中RowId并不能唯一标识不同表中的数据行。测试结果显示,相同RowId可能出现在多个表中,因此无法仅凭RowId确定其所属的具体表。
2132

被折叠的 条评论
为什么被折叠?



