2014-12-04 29 views
9

我的表看起来像这样
如何使用仅分区键更新cassandra中的行?

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 

错误:?消息=“缺少强制PRIMARY KEY部分REAL_TIME

我试图创建一个辅助指标,但它不允许在主键

我怎样才能解决这个

我选择user_id说明是在主键,因为我希望能够做select * from Notes where user_id = 'xxx'应该是可能的。

回答

8

虽然这可能使用RDBMS和SQL是可能的,但在Cassandra中不可能使用cql。从上UPDATE命令DataStax文档:

Each update statement requires a precise set of primary keys to be specified using a WHERE clause. You need to specify all keys in a table having compound and clustering columns.

你可能需要用Python语言编写的东西快(或其他车手之一)来执行此类型的更新。

+2

虽然上面的答案是正确的,但我认为值得一提的是,您可以在主键的最后一列使用'IN'子句(即来自作者问题的'insertion_time')。根据您的使用情况,这对于减少所需的CQL语句量非常有用。 – user909481 2017-02-15 09:43:46

相关问题