【问题标题】:Call Cassandra function without selecting (with CQL)在不选择的情况下调用 Cassandra 函数(使用 CQL)
【发布时间】:2016-04-05 20:11:45
【问题描述】:

有许多 Cassandra 内置函数,例如 now()uuid()。是否可以使用 CQL 在没有 SELECT 操作的情况下调用这些函数?到目前为止,我必须这样做

SELECT count(*), uuid() from table;

table 是一个始终为空的表。

有没有更好的办法?

【问题讨论】:

    标签: cassandra cql


    【解决方案1】:

    很遗憾,不,您不能在不执行查询/更新插入的情况下调用 uuid()now() 之类的函数。但我确实有办法让你不必维护一张空桌子。

    SELECT uuid() FROM system.local;
    

    system.local 将:

    A) 永远在那里。

    B) 只包含一行。

    这与您现在所做的类似,但同样,它使您不必维护一个空表来生成 UUID。

    更新示例

    如果我有这样的表:

    CREATE TABLE timetest (
      yearmonth TEXT,
      id UUID,
      value TEXT,
      PRIMARY KEY (yearmonth, id));
    

    我可以插入它并像这样生成一个新的 UUID:

    INSERT INTO timetest (yearmonth,id,value) 
    VALUES ('201601',uuid(),'v1');
    

    【讨论】:

    • 泰。您能否举例说明如何使用 upsert 执行此操作?
    • 泰。但是我不能同时插入和获取,对吗?如果我想将该函数的结果用作主键,我就做不到,因为我不知道那会是什么......
    • @PawelVeselov 好点。在这种情况下,您可能需要考虑生成 UUID 客户端,以便您拥有它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-10
    • 2016-07-10
    • 2016-04-14
    • 2014-03-23
    • 1970-01-01
    • 2013-09-13
    • 2011-12-26
    相关资源
    最近更新 更多