我有一个表,其中一个字符串作为键,一个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);发布于 2016-06-02 15:20:21
不幸的是,即使在C* 3.5中,在集群列受到范围限制的情况下,您也无法进行更新。
我可以告诉您,在进行更新时,必须指定整个主键,因此不能将其应用于一系列数据。
在执行条件更新时,您可以首先执行一个SELECT来标识要更改的候选行,然后在一个批处理中进行更新(因为它们都适用于同一个分区--这是可以的)。
https://stackoverflow.com/questions/37594217
复制相似问题