【发布时间】:2009-02-18 03:32:45
【问题描述】:
什么是 ROWID 和 RECID 实际上正在进行中。我们可以使用 RECID 代替 ROWID。它们之间的差异是什么??
【问题讨论】:
标签: progress-4gl
什么是 ROWID 和 RECID 实际上正在进行中。我们可以使用 RECID 代替 ROWID。它们之间的差异是什么??
【问题讨论】:
标签: progress-4gl
RECID 和 ROWID 都是指向数据库中特定记录的唯一指针。
两者或多或少都是指向数据库本身的物理指针,除了在底层平台上没有等效项的非 OpenEdge 表。在这些情况下,它可能由构成主键的值组成。
RECID 是 10.1A 之前的 32 位整数,当数据库是 OpenEdge 数据库并且只有一个区域时很好。从 10.1B 开始,它们被升级为 64 位整数。
在 v6 中添加了容量以连接到非 OpenEdge 数据库,并在 v8 中添加了创建多个存储区域的 OpenEdge 数据库。那时,RECID 不足以在所有情况下唯一地处理表中的所有记录。
于是ROWID结构就诞生了。它的实际架构取决于底层数据库的类型,但它不受整数的限制。
文档在声明 that RECIDs should not be used going forward 方面相当清楚,但操作 OpenEdge 数据库元模式的代码除外。
【讨论】:
RECID 已被弃用,现在有几个版本。 ROWID 是它的替代品。我知道它实际返回的是包含您的记录的数据库块的物理地址。从记忆中,当他们想要支持来自 4GL 的不同数据库引擎(Oracle / SQL server 等)时,他们引入了 ROWID,这意味着 ROWID 中的内容比 RECID 更多。
我会远离 RECID,你可能会在短期内侥幸逃脱,但你给自己带来了一个你可以完全避免的潜在问题。
【讨论】: