首页 > 解决方案 > 如何更改行的 TTL 或如何清除 Oracle NoSQL 数据库中的旧数据?

问题描述

似乎命令 alter table TTL 只影响在那之后写入的行;它对现有行没有影响

如何在旧/现有数据上应用 TTL?我们怎样才能清除?有什么建议么

标签: oracle-nosql

解决方案


你说的对。Alter table TTL 只影响在那之后写入的行;它对现有行没有影响

您可以使用删除命令进行清除。请参阅下面的详细示例在这种情况下,我想将 TTL 设置为 1 小时

sql-> SELECT $u, remaining_hours($u) as hours  FROM user $u ;
{"u":{"id":1,"name":"Hello"},"hours":3}
{"u":{"id":3,"name":"Hello"},"hours":1}
{"u":{"id":2,"name":"Hello"},"hours":1}
3 rows returned
sql-> delete from user $u where remaining_hours($u)  > 1;
{"numRowsDeleted":1}
1 row returned
sql-> SELECT $u, remaining_hours($u) as hours  FROM user $u ;
{"u":{"id":2,"name":"Hello"},"hours":1}
{"u":{"id":3,"name":"Hello"},"hours":1}

您还可以更新每一行的 TTL。但不支持多行更新

UPDATE User $u SET TTL 1 hours WHERE id = 1;
UPDATE User $u SET TTL remaining_hours($p) + 3 hours WHERE id = 1;

你也有 API 来做这件事


推荐阅读