Oracle中的AFAIK ROWID表示适当数据文件中记录的物理位置。 在哪种情况下,记录的ROWID可能会改变?
我所知道的是分区表上的UPDATE,它将记录“移动”到另一个分区。
还有其他情况吗?我们的大多数数据库都是Oracle 10。
答案 0 :(得分:31)
正如您所说,它会在磁盘上物理移动的任何时候发生,例如:
如果在索引组织表中,那么对主键的更新也会为您提供不同的ROWID。
答案 1 :(得分:8)
+1 @WW
暂且不说:
索引组织表的ROWID是不同的(我相信它们称为UROWID),因为在更新表时(树节点拆分或连接时)行的物理位置可能会发生变化。
为了使索引仍然可行,UROWID包括“逻辑id”(主键)和“可能的物理id”(常规ROWID),后者可能已过期。
答案 2 :(得分:8)
WW的另一个+1,但只是添加一点额外的......
如果驱动问题是你是否可以存储ROWID供以后使用,我会说“不要这样做”。
您可以在事务中使用ROWID - 例如收集一组ROWID来执行后续操作 - 但是您应该从不将ROWID存储在表中并假设它们'可以在以后使用。