我在Cassandra中创建了一个带有计数器列的表,就像:
create table test_count(
pk int,
count counter,
primary key (pk)
);
然后我更新了一些记录,如:
update test_count set count = count + 1 where pk = 1;
然后我想将计数重置为0,但cql中没有重置命令,所以我删除了记录:
delete from test_count where pk = 1;
然后我重新执行更新CQL,但是当我select * from test_count
时,没有pk = 1
的记录,那么它是Cassandra的错误吗?当您删除带有计数器列的记录时,它会永远消失吗?如何将计数列重置为0?如何重新插入带有计数器列的记录?
答案 0 :(得分:3)
您可以先查询计数器的当前值,然后发出更新以减去该金额。
您可以删除计数器,然后使用其他行键启动新计数器。您将不再尝试使用原始计数器。使用这种方法,您可能希望按日或按周对计数器进行分区,以便在新的一天开始时,您将从一组新的清零计数器开始。