如果我更新行,是否有系统属性/虚拟列会发生变化?还是我需要自定义时间戳属性来实现此目的?我想使用这样的属性来检查 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。