我的表看起来像这样
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'
。
答案 0 :(得分:12)
虽然使用RDBMS和SQL可以实现这一点,但在Cassandra中使用cql是不可能的。来自UPDATE命令的DataStax文档:
每个更新语句都需要使用WHERE子句指定一组精确的主键。您需要在具有复合和聚类列的表中指定所有键。
您可能需要在Python(或其他驱动程序之一)中快速编写一些内容来执行此类更新。