【发布时间】:2020-07-09 02:30:23
【问题描述】:
我在 Oracle 11g 中有 2 个表 A 和 B。表 B 包含与表 A 完全相同的数据,但多了一个 ROWID 列,即表 A 的 ROWID。
我将更改表 B 中 colx 列的值。然后通过将表 A 和表 B 与 ROWID 连接来更新表 A 中的 colx。
现在,ROWID 已编码。我应该将 ROWID 转换为 char 吗?当一个是列而另一个是Oracle ROWID伪列时,如何在表A和表B之间进行连接。
UPDATE tablea ta
SET (colx) = (SELECT colx FROM tableb tb WHERE ta.rowid = tb.rowid)
WHERE EXISTS (
SELECT 1
FROM tableb tb
WHERE ta.rowid = tb.rowid )
【问题讨论】:
-
您可能不想长时间存储 ROWID,因为它们是可能独立于逻辑数据而变化的物理数据。例如,如果有人在桌子上运行
MOVE来更改属性,则所有 ROWID 都会更改。