1

我正在使用 rowId 执行 oracle 表回滚:

所以在每次数据注入之前,我都会记录表的最大rowid。如果出现任何问题,我将从记录 rowid > max rowid 的表中删除。

执行删除后,我仍然可以看到注入的记录。

请指教!

谢谢,理查德

4

1 回答 1

3

ROWID

数据库中行的全局唯一地址。

不是每个新行都会递增的标识符。如果具有此 ROWID 的行已被删除,则新行可以使用以前使用的 ROWID。

另请注意,Oracle 可以重用已为新行释放的旧块(这将导致较低的 ROWID)。Oracle 还可以在文件编号低于最后一个 ROWID 的文件的另一个数据文件中获取范围。在大多数情况下,您无法精确控制新行的物理最终位置,因此您不应依赖 ROWID 增加。

最后,您不应该依赖 ROWID 的当前实现,它可能会在未来的版本中发生变化。

您可以使用序列或时间戳列来识别新记录。甚至是一个标志列。

于 2012-01-13T16:11:08.407 回答