我有一个表格,其中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);
答案 0 :(得分:2)
不幸的是,即使在C * 3.5中,看起来你也可以进行UPDATE,其中聚类列的范围受到限制。
据我所知,在进行UPDATE时必须指定整个主键,它不能应用于一系列数据。
当您正在进行条件更新时,您可以先SELECT
确定要更改的候选行,然后批量执行更新(因为它们都适用于同一个分区,这没关系)