Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/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
如何仅使用分区键更新cassandra中的行?_Cassandra_Nosql_Cql_Cql3 - Fatal编程技术网

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

如何仅使用分区键更新cassandra中的行?,cassandra,nosql,cql,cql3,Cassandra,Nosql,Cql,Cql3,我的桌子看起来像这样 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); 我希望使用用户id='xxx'更新所有行,而不必指定所有聚类索引 U

我的桌子看起来像这样

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);
我希望使用用户id='xxx'更新所有行,而不必指定所有聚类索引

UPDATE Notes SET read = true where user_id = 'xxx'; // Says Error
错误:message=“缺少实时必需的主键部分”

我尝试过创建辅助索引,但不允许在主键上创建

我怎样才能解决这个问题


我选择user_id作为主键,因为我希望能够从注释中选择*,其中user_id='xxx'应该是可能的。

虽然使用RDBMS和SQL可以做到这一点,但在Cassandra中使用cql是不可能的。从命令的DataStax文档中:

每个update语句都需要使用WHERE子句指定一组精确的主键。您需要指定具有复合列和群集列的表中的所有键


您可能需要用Python(或其他驱动程序之一)快速编写一些东西来执行这种类型的更新。

尽管上述答案是正确的,但我认为值得一提的是,您可以在主键的最后一列使用
in
子句(即作者问题中的
插入时间
)。根据您的用例,这有助于减少所需的CQL语句量。