我有一个表来维护产品的数据。每隔几分钟进行一次api调用后,我就更新这个表。
假设我有这张table。
create table products(
id int,
name text,
created timestamp,
updated timestamp,
primary_key(id)
);
所以我在00:00:00的时候做了一个api调用,得到了产品列表
[
{id:1, name:'product1'},
{id:2, name:'product2'}
]
我把它放在我的Cassandra桌上
id | name | created | updated
1 | Product1 | 1/1/2018 00:00:00| 1/1/2018 00:00:00
2 | Product2 | 1/1/2018 00:00:00| 1/1/2018 00:00:00
现在,在10分钟后的第二个api调用中,用户删除了product1,但创建了product3,因此我得到了如下api调用输出
[
{id:2, name:'product2'},
{id:3, name:'product3'}
]
我将在我的cassandra表中upsert这个(因为我不想在决定是否插入或更新之前检查记录是否存在),但是我想在我的uperquery中维护product2的创建时间,以便我知道产品是何时创建的,以及产品的生存期是什么。
我是否可以通过设置它now()来维护创建的时间戳,而不在查询中指定它,然后继续更新updatetime值?
我的table应该是这个样子
id | name | created | updated
1 | Product1 | 1/1/2018 00:00:00 | 1/1/2018 00:00:00
2 | Product2 | 1/1/2018 00:00:00 | 1/1/2018 00:00:10
3 | Product3 | 1/1/2018 00:00:10 | 1/1/2018 00:00:10
1条答案
按热度按时间suzh9iv81#
热释光;博士;对。
您必须知道在upsert期间要调用哪些列,这将是推送到应用程序端的唯一逻辑,但是数据模型可以完全按照您的预期工作。
现在,在产品更新之后,您需要专门化api以调用其他内容,但是使用以下cql,您可以得到您期望的结果: