使用update时如何将ttl设置为where子句中提到的列

rpppsulh  于 2021-06-10  发布在  Cassandra
关注(0)|答案(1)|浏览(388)

我知道cassandra会更新ttl到我插入的所有列 USING TTL . 但是如何更新where子句中提到的其余列的ttl呢。
下面是一个例子

UPDATE NerdMovies (movie, director, main_actor, year)
   VALUES ('Serenity', 'Joss Whedon', 'Nathan Fillion', 2005) where
   language = 'English' and country = 'US'
   USING TTL 86400;

这只会更新列 movie, director, main_actor, year 。我要更新列的ttl language and country 也是(顺便说一下,这是主键)。我怎样才能做到这一点?

nwlqm0z1

nwlqm0z11#

不能在主键上设置ttl。你可以投票给一个功能来做这件事https://issues.apache.org/jira/browse/cassandra-9312 (但可能不适用于您的用例,如果所有列都不是pk)。
您可以读出这些值,然后用ttl向上插入它们,如:

INSERT INTO NerdMovies (movie, director, main_actor, year, language, country)
   VALUES ('Serenity', 'Joss Whedon', 'Nathan Fillion', '2005', 'English', 'US')
   USING TTL 86400;

相关问题