Oracle是否具有行的生存时间功能?

时间:2015-03-20 19:25:07

标签: sql oracle

在Cassandra中,我习惯了upserts的USING TTL子句,它设置了删除upserted数据的秒数。

Oracle是否有这样的功能?我还没有找到任何关于它的信息。

2 个答案:

答案 0 :(得分:6)

有一些方法可以实现此功能,但我不相信它是内置的。最简单的方法是在表中有一个CreatedAt列,用于指定何时插入行。然后,创建一个视图以获取最新的行,因此在最近的一天:

create view v_table as
    select t.*
    from table t
    where t.CreatedAt >= sysdate - 1;

这修复了数据访问端。要实际删除行,您需要一个额外的作业来定期删除表中的旧行。

答案 1 :(得分:0)

我认为这取决于您所说的“Oracle”是什么意思。

Oracle 关系数据库没有开箱即用。我们通常会安排一个存储过程来执行此类任务。

Oracle NoSQL database has it

<块引用>

生存时间 (TTL) 是一种允许您自动使表行过期的机制。 TTL 表示为允许数据在存储中存在的时间量。已达到其过期超时值的数据将无法再检索,并且不会出现在任何商店统计信息中。数据是否从存储中物理移除是由用户无法控制的内部机制决定的。