CQL 3 Cassandra 1.2计数器:如何插入主键?

时间:2013-07-17 22:17:06

标签: cassandra counter

我想在CQL3中使用像这样的Cassandra计数器

  

create table count1(id int PRIMARY KEY,c1 counter);

我知道为了更新计数器,我需要做一些表格:

  

更新count1 set c1 = c1 + 1 where ..

但在此之前,我需要在key (id);中插入一个值,但我得到:

cqlsh:test2> insert into count1 (id) values (4);
Bad Request: INSERT statement are not allowed on counter tables, use UPDATE instead
是什么给了什么?

1 个答案:

答案 0 :(得分:7)

Cassandra没有主键存在或不存在的概念 - 它只是存在某个主键的单元格。

因此,对于普通列族(即非计数器),无论先前是否使用该主键插入了任何内容,您都可以insertupdate(它们在语义上相同)。

对于计数器表,CQL要求您使用update而不是insert,以明确它是递增而不是设置值。您不能在Cassandra中设置计数器值,只能在inc / dec中设置。如果没有先前的计数器,则假定其值为0.因此您可以运行

update count1 set c1 = c1 + 1 where id = 2;

并且计数器的值为1:

select * from count1;

 id | c1
----+----
  2 |  1