2013-07-17 32 views
4

我想在CQL3使用Cassandra的計數器這樣CQL 3 Cassandra 1.2計數器:如何插入主鍵?

創建表COUNT1(ID INT PRIMARY KEY,C1計數器);

我知道,以更新,我需要做的形式的東西櫃檯:

更新COUNT1組C1 = C1 + 1,其中..

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

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

怎麼辦?

回答

6

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 
+0

感謝理查德,我明白了,所以我必須更新櫃檯桌上有一個任意的標識符可以工作。有點奇特,但是有效 - 謝謝 –

+0

這是您用來檢索它的計數器的ID。您可以在列族中儘可能多地添加。 – Richard