Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
CQL 3 Cassandra 1.2计数器:如何插入主键?_Cassandra_Counter - Fatal编程技术网

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

CQL 3 Cassandra 1.2计数器:如何插入主键?,cassandra,counter,Cassandra,Counter,我想像这样在CQL3中使用卡桑德拉计数器 创建表count1(id int主键,c1计数器) 我知道为了更新计数器,我需要执行以下操作: 更新计数1集合c1=c1+1,其中 但在此之前,我需要在键(id)中插入一个值但我得到: cqlsh:test2> insert into count1 (id) values (4); Bad Request: INSERT statement are not allowed on counter tables, use UPDATE instead

我想像这样在CQL3中使用卡桑德拉计数器

创建表count1(id int主键,c1计数器)

我知道为了更新计数器,我需要执行以下操作:

更新计数1集合c1=c1+1,其中

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

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

给出了什么?

Cassandra没有主键存在与否的概念-只有具有特定主键的单元格存在

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

对于计数器表,CQL要求您使用
update
而不是
insert
,以明确它是递增的,而不是设置值。您不能在Cassandra中设置计数器值,只有inc/dec。如果之前没有计数器,则假定其值为0。这样你就可以跑了

update count1 set c1 = c1 + 1 where id = 2;
计数器的值为1:

select * from count1;

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

谢谢Richard,我明白了,所以我必须用一个任意id更新计数器表才能工作。有点奇怪,但这是有效的——这是您用来检索它的计数器的id。列族中可以有任意数量的列。