我的理解是,ROWID是查询返回的结果中每一行的唯一值.
我们为什么需要这个罗维德?甲骨文中已经有了ROWNUM.
有没有人在SQL查询中使用过ROWID?
我的理解是,ROWID是查询返回的结果中每一行的唯一值.
我们为什么需要这个罗维德?甲骨文中已经有了ROWNUM.
有没有人在SQL查询中使用过ROWID?
ROWID是行的物理位置.因此,它是定位行的最快方法,甚至比主键查找更快.因此,它在某些类型的事务中很有用,在这些事务中,我们 Select 一些行,存储它们的rowid,然后在后面的where
子句中对这些行使用用于DML的rowid.
Oracle Select .当我们使用WHERE CURRENT OF更新锁定行时,FOR UPDATE语法隐式使用ROWID.此外,Exceptions表(在使用EXCEPTIONS INTO子句应用约束时引用)具有列ROW_ID.这使我们可以快速识别违反约束的行.
后一个示例指出了另一个通用用法:当我们编写一些泛型代码时,需要一种存储UID的机制,而不用担心数据类型、组合键等.
另一方面,ROWNUM是一个伪列,用于标记给定结果集中的一行.它没有永久意义.
edit个
给定记录的ROWID可以在系统的生命周期中更改,例如通过表重建.此外,如果删除了一条记录,则可以赋予该ROWID一个新记录.因此,从长远来看,ROWID不适合用作UID.但是它们足够好,可以在事务中使用.