检查系统属性/列的"lost update"



如果我更新行,是否有系统属性/虚拟列会发生变化?还是我需要自定义时间戳属性来实现此目的?我想使用这样的属性来检查 Web 应用程序中丢失的更新。我不在数据库事务中。因此,"可序列化隔离级别"在这里不是选项。

顺便问一下:如何在内部检查 Oracle 的更新?

例:

foo

ID    ATTR1    SYS_ATTR
-----------------------
1     foo      X1
UPDATE foo
SET attr1 = 'bar'
WHERE id = 1;
ID    ATTR1    SYS_ATTR
-----------------------
1     bar      Z1 -- <- changed too

甲骨文 11g

在 11g 中没有比这开箱即用的了。通常,您需要为此类跟踪提供自己的属性。

是的,您需要拥有自己的时间戳列才能在 Oracle 中实现乐观锁定。

与此同时,我发现与上面的评论相比,有一个解决方案。在乐观锁定的情况下,可以将伪列与 ROWDEPENENCIES 表选项结合使用ORA_ROWSCN。

最新更新