【发布时间】:2015-08-06 03:46:19
【问题描述】:
我在 Cassandra 中创建了一个带有计数器列的表,就像:
create table test_count(
pk int,
count counter,
primary key (pk)
);
然后我更新一些记录,例如:
update test_count set count = count + 1 where pk = 1;
然后我想将count重置为0,但是cql中没有reset命令,所以我删除了记录:
delete from test_count where pk = 1;
然后我重新执行更新CQL,但是当我select * from test_count时,没有pk = 1的记录,是不是Cassandra的bug?当您删除带有计数器列的记录时,它会永远消失吗?如何将计数列重置为 0?如何重新插入带有计数器列的记录?
【问题讨论】:
-
从 pk = 1 的 test_count 中删除;此处的此查询意味着您要删除 pk=1 的所有记录。所以这就是为什么你的记录都被删除了。如果你想将你的计数重置为 0,你可以尝试 set count = 0。
-
谢谢,但是在cassandra中,你只能写set count = count +/- *,set count = 0是不允许的,而且cassandra不允许你插入带有计数器列的记录,你只是可以更新,所以我使用更新而不是删除后插入。
-
在我运行Delete cql之前,如果不存在,更新将插入记录,但在我运行Delete之后情况发生了变化
-
一个选项是您可以减去计数,例如,如果从选择中您收到计数为 5,您执行类似这样的操作 Update test_count Set count = count-5 where pk=1;