如何仅使用分区键更新cassandra中的行?

时间:2014-12-04 13:48:53

标签: cassandra datastax cql cql3 nosql

我的表看起来像这样

create table Notes(
    user_id varchar,
    real_time timestamp,
    insertion_time timeuuid,
    read boolean PRIMARY KEY (user_id,real_time,insertion_time)
);

create index read_index on Notes (read);

我想更新所有 user_id ='xxx',而必须指定所有群集索引。

UPDATE Notes SET read = true where user_id = 'xxx'; // Says Error

错误:message =“缺少必需的PRIMARY KEY部分real_time

我尝试过创建二级索引,但主键上不允许这样做。

我该如何解决这个问题?

我选择user_id作为主键,因为我希望能够做到select * from Notes where user_id = 'xxx'

1 个答案:

答案 0 :(得分:12)

虽然使用RDBMS和SQL可以实现这一点,但在Cassandra中使用cql是不可能的。来自UPDATE命令的DataStax文档:

  

每个更新语句都需要使用WHERE子句指定一组精确的主键。您需要在具有复合和聚类列的表中指定所有键。

您可能需要在Python(或其他驱动程序之一)中快速编写一些内容来执行此类更新。