使用timeuuid更新行作为群集列

时间:2016-06-02 14:05:46

标签: cassandra timeuuid

我有一个表格,其中String为键,timeuuid为聚类列。

我想做的是,根据timeuuid < now()对其进行更新。

示例:

UPDATE table SET is_used = true WHERE key1 = 'value' AND created_at < timeuuid('2016-02-03') IF is_used != true;

但是

InvalidRequest: code=2200 [Invalid query] message="Invalid operator < for PRIMARY KEY part created_at

是否有解决方法或解决方案?在这种情况下,为什么将聚类列视为主键?

一切顺利

---- Update1:​​---

我正在使用cassandra 2.2版架构如下:

CREATE TABLE book (
created_at timeuuid,
book_type varchar,
book_title varchar
PRIMARY KEY ((book_type), created_at)) WITH CLUSTERING ORDER BY (book created_at DESC);

1 个答案:

答案 0 :(得分:2)

不幸的是,即使在C * 3.5中,看起来你也可以进行UPDATE,其中聚类列的范围受到限制。

据我所知,在进行UPDATE时必须指定整个主键,它不能应用于一系列数据。

当您正在进行条件更新时,您可以先SELECT确定要更改的候选行,然后批量执行更新(因为它们都适用于同一个分区,这没关系)