在cassandra中插入时使用记录的时间戳字段设置TTL

时间:2016-08-08 14:58:51

标签: cassandra cql cql3

我想在插入过程中从表记录的时间字段(id,名称,时间)设置TTL 30天。为此,我创建了一个用户定义函数(UDF)bigint fun(rTime,cTime)作为

CREATE FUNCTION fun(rtime timestamp,ctime timestamp) CALLED ON NULL INPUT  
RETURNS bigint LANGUAGE java as 'return 2592000-((ctime.toTime() -rtime.toTime())/1000);';

这里,函数乐趣是计算这些数据应该存在的时间(以秒为单位)。 2592000是30天内的秒数。

现在我尝试使用上面的功能将TTL设置为

INSERT INTO record(id,name,time) VALUES (123,'data123','2016-08-08 06:06:00') 
USING TTL fun('2016-08-08 06:06:00',totimestamp(now()));

错误

  

语法异常:ErrorMessage代码= 2000 ........

是否有其他方法可以根据记录时间字段设置ttl。上述方法有什么问题?

1 个答案:

答案 0 :(得分:1)

USING子句不支持函数调用。 在您的情况下,您的客户必须计算适当的TTL并将其作为第二个传递给查询。

相关问题