2012-03-14 61 views
5

如果行鍵'row1'不存在,是否有任何方法來阻止CQL命令更新創建新行?Cassandra CQL - 更新命令不會創建新行

UPDATE columnfamily SET data = 'test data' WHERE key = 'row1'; 
+0

似乎是重複的http://stackoverflow.com/questions/8154332/cassandra-unique-constraint-on-row-key/ – Tamil 2012-03-15 05:55:46

回答

6

更新2015年4月10日:

由於卡桑德拉2.0,你可以用light weight transactions做到這一點。請注意,儘管它們被稱爲「輕量級」,但這些查詢需要在Cassandra羣集上完成更多工作。

感謝@BSB的更新。

前2.0答案:

號不同於SQL,在CQL Updateinsert在語義上是相同的。您必須首先進行閱讀以確定該行的存在。

+0

謝謝。我發現cassandra 1.1現在處於測試階段,並且包含CQL版本3.我不假設您知道這是否包含任何可以解決此問題的內容? – mesh 2012-03-17 11:14:23

+1

CQL 3不會更改插入vs更新的語義。 – psanford 2012-03-17 18:26:28

+2

在C *中有輕量級事務的概念。你可以做「更新......如果存在」或「如果X = Y」 – BSB 2015-04-10 03:10:08