使用 UPDATE 时如何将 TTL 设置为 where 子句中提到的列
How to set TTL to columns that are mentioned in where clause when using UPDATE
我知道 Cassandra 会更新我在 USING TTL
时插入的所有列的 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
。我也想更新列 language and country
的 TTL(顺便说一句,它们是主键)。我怎样才能做到这一点?
您不能在主键上设置 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;
我知道 Cassandra 会更新我在 USING TTL
时插入的所有列的 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
。我也想更新列 language and country
的 TTL(顺便说一句,它们是主键)。我怎样才能做到这一点?
您不能在主键上设置 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;