Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在oracle中查找更新时间_Oracle_Plsql - Fatal编程技术网

如何在oracle中查找更新时间

如何在oracle中查找更新时间,oracle,plsql,Oracle,Plsql,在oracle中更新表的特定记录时,是否有要查找的命令。 我想检测oracle中更新记录的顺序。没有直接的方法。也许您可以使用Oracle Flashback技术。因此,您可以看到旧版本的行 默认情况下,它可以为每个表保留900秒(15分钟)的历史记录。你可以增加它,并保证保持。但要确保你有足够的空间 在oracle中查找表的特定记录何时更新的步骤 您需要了解有关ORA_ROWSCN。对于每一行,ORA_ROWSCN返回该行最近更改的保守上限系统更改编号(SCN)。此伪列用于确定上次更新行的大致

在oracle中更新表的特定记录时,是否有要查找的命令。
我想检测oracle中更新记录的顺序。

没有直接的方法。也许您可以使用Oracle Flashback技术。因此,您可以看到旧版本的行

默认情况下,它可以为每个表保留900秒(15分钟)的历史记录。你可以增加它,并保证保持。但要确保你有足够的空间

在oracle中查找表的特定记录何时更新的步骤

您需要了解有关
ORA_ROWSCN
。对于每一行,
ORA_ROWSCN
返回该行最近更改的保守上限系统更改编号(SCN)。此伪列用于确定上次更新
行的大致时间


阅读更多信息。

我不知道是否有办法做到这一点,但如果您有长期的需求,请在表中添加上次更新的时间戳列。顺便说一句,如果您使用一种叫做“软删除”的东西,您甚至可能不需要物理删除记录。使用软删除,记录被标记为已删除,而无需物理删除。我已更新了时间戳列,但当用户直接从数据库更新时,此字段对我没有帮助,您可以在该表中创建虚拟列,它的“计算”如下:每次插入/更新记录时,它都会在其末尾追加sysdate,从而为您提供插入/更新的历史记录。您可以在每个日期的开始处添加“ins”、“upd”等字样,以指示操作。请记住,当值达到该列允许的最大值时,将使用一些逻辑来截断该值。。。就像一个想法一样,快速而肮脏的-
altertable yourTable将始终生成的hist_col clob添加为(hist_col | | to_clob(sysdate))VIRTUAL
。为什么是clob-所以你不在乎它被更新了多少次(4Gigs的文本…嗯,几千年的更新)。实际上你不需要“ins”、“upd”关键字,因为只有第一个是“插入的”,其余的都是“更新的”。我删除了我的评论,因为不可能创建这样的专栏。这里的解决方案是使用触发器,除此之外,这听起来不是解决表设计问题的好办法。