使用oracle数据库获取提交时的当前时间

时间:2016-05-19 15:42:50

标签: oracle plsql

插入行时,我想设置一个列,等于提交时的当前时间。

如果我在列上使用默认值sysdate,它将使用插入时的当前时间(这可能与提交时间明显不同)。如果我使用on insert触发器,它会再次使用插入时的时间 - 而不是实际提交。

是否有任何可能的解决方案可以使用oracle获取当前时间?

1 个答案:

答案 0 :(得分:2)

有选择。不过,他们可能比你希望的更重量级。

您可以创建一个快速刷新的物化视图,该视图在提交时刷新,并在该行提交时触发的物化视图上设置触发器。但是,这意味着您需要在基表上使用物化视图日志,这样您的插入会产生写入表的开销,而日志加上您需要承担物化视图刷新的成本当你犯了。如果您必须完全刷新物化视图,则还需要确保关闭触发器。这些动作很多,会增加系统的复杂性。

根据Oracle版本的不同,您可以启用闪回数据存档(也称为Total Recall),它将记录每个版本的数据提交时间的SCN和时间戳。缺点是你有一个潜在的大型历史表,可能会跟踪一堆你不关心的信息。