我有一个表来维护产品数据。 每隔几分钟调用一次API后,我就会更新此表。
说我有这张桌子。
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表中追加此内容(因为我不想在决定是插入还是更新之前检查记录是否存在),但是我想在我的不满意查询中保留product2的创建时间,以便我知道产品何时创建以及产品的使用寿命是什么?
是否可以通过设置now()而不在查询中指定它来维护创建的时间戳,然后继续更新updatetime值?
我的桌子应该像这样
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
答案 0 :(得分:0)
TL; DR; 是的。
您将必须知道在upsert期间要调用哪些列,这将是唯一推送到应用程序端的逻辑,但是数据模型可以按预期工作。
CREATE TABLE KS.products (
id int PRIMARY KEY,
created timestamp,
name text,
updated timestamp
)
INSERT INTO products (id, name, created, updated)
VALUES (1, 'TTzV2', toTimeStamp(now()), toTimeStamp(now()));
INSERT INTO products (id, name, created, updated)
VALUES (2, 'smLL301', toTimeStamp(now()), toTimeStamp(now()));
SELECT * FROM KS.products;
id | created | name | updated
----+---------------------------------+---------+---------------------------------
1 | 2018-09-28 17:22:38.502000+0000 | TTzV2 | 2018-09-28 17:22:38.502000+0000
2 | 2018-09-28 17:22:39.180000+0000 | smLL301 | 2018-09-28 17:22:39.180000+0000
现在,在更新产品之后,您将需要专门化API来调用其他内容,但是使用以下CQL,您可以获得预期的结果:
INSERT INTO products (id, updated) VALUES (2, toTimeStamp(now()));
INSERT INTO products (id, name, created, updated)
VALUES (3, 'Gt3X', toTimeStamp(now()), toTimeStamp(now()));
SELECT * FROM KS.products;
id | created | name | updated
----+---------------------------------+---------+---------------------------------
1 | 2018-09-28 17:22:38.502000+0000 | TTzV2 | 2018-09-28 17:22:38.502000+0000
2 | 2018-09-28 17:22:39.180000+0000 | smLL301 | 2018-09-28 17:25:38.208000+0000
3 | 2018-09-28 17:25:38.774000+0000 | Gt3X | 2018-09-28 17:25:38.774000+0000