有许多Cassandra内置函数,例如now()
或uuid()
。是否可以使用CQL在没有SELECT
操作的情况下调用这些函数?到目前为止,我必须做
SELECT count(*), uuid() from table;
table
是一个始终为空的表。
有更好的方法吗?
答案 0 :(得分:2)
不幸的是,如果不执行查询/ upsert,则无法调用uuid()
和now()
等函数。但我确实有办法让你不必保持一张空桌子。
SELECT uuid() FROM system.local;
system.local
将:
A)永远在那里。
和
B)只包含一行。
它类似于你现在正在做的事情,但同样,它会阻止你只需维护一个空表来生成一个UUID。
Upsert示例
如果我有这样的表:
CREATE TABLE timetest (
yearmonth TEXT,
id UUID,
value TEXT,
PRIMARY KEY (yearmonth, id));
我可以插入它并生成一个像这样的新UUID:
INSERT INTO timetest (yearmonth,id,value)
VALUES ('201601',uuid(),'v1');