我的理解是,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.但是它们足够好,可以在事务中使用.

Database相关问答推荐

使用mongoose 在嵌套对象中查找特定字段

如何在没有sqlmock的情况下模拟db ping

MySQL 语法 LIMIT x, y 的 T-SQL 类似的功能是什么?

Oracle SQL 开发人员中的 DB2 数据库

SQL Server 中的Is Identity列属性是什么意思?

为什么null不等于null false

MongoDB:查询具有两个相等字段 $match 和 $eq 的文档

跨不同数据库创建视图

Spring 的 JdbcTemplate 是否在查询超时后关闭连接?

如何找到 Oracle 数据库的 URL?

在 MS SQL 中使用 GUID 作为主键是不是一个坏主意?

文件访问速度与数据库访问速度

在 SQL 中与 NULL 值连接

friendship数据库模式

在 iphone 上本地存储数据

如何使用 MySQL Workbench 架构差异两个数据库?

ORM 还是Vietnam of Computer Science吗?

sqlite 表中的最大行数

如何通过数据库链接执行 Oracle 存储过程

使用 Django 的复合/复合主/唯一键