Oracle的RowId能唯一的标识一个数据行吗?

Oracle RowId 特性解析
本文通过实验证明了Oracle数据库中RowId并不能唯一标识不同表中的数据行。测试结果显示,相同RowId可能出现在多个表中,因此无法仅凭RowId确定其所属的具体表。

研究原文地址: 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直接判断出他到底是属于哪个表格的、
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值