ROWID (oracle) - 有什么用吗?

2024-04-01

我的理解是,ROWID 是查询返回的结果中每一行的唯一值。

为什么我们需要这个ROWID? ORACLE中已经有ROWNUM了。

有人在 SQL 查询中使用过 ROWID 吗?


ROWID 是行的物理位置。因此,它是定位行的最快方法,甚至比主键查找还要快。因此,它在某些类型的事务中非常有用,在这些事务中,我们选择一些行,存储它们的 ROWID,然后在以后使用 ROWIDwhere针对这些相同行的 DML 子句。

当我们使用 WHERE CURRENT OF 更新锁定行时,Oracle SELECT ... FOR UPDATE 语法隐式使用 ROWID。此外,EXCEPTIONS 表(在使用 EXCEPTIONS INTO 子句应用约束时引用)有一列 ROW_ID。这使我们能够快速识别破坏约束的行。

后一个例子指出了另一种一般用法:当我们编写一些通用代码并需要一种存储 UID 的机制而不用担心数据类型、组合键等时。

另一方面,ROWNUM 是一个伪列,它标记给定结果集中的一行。它没有永久的意义。

edit

给定记录的 ROWID 可以在系统的生命周期内更改,例如通过表重建。此外,如果删除一条记录,则可以为新记录指定该 ROWID。因此,从长远来看,ROWID 不适合用作 UID。但它们足以在事务中使用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ROWID (oracle) - 有什么用吗? 的相关文章

随机推荐