cassandra - 如何在具有用户定义类型的表中插入值?

标签 cassandra cql user-defined-types scylla

我正在使用 Scylla (Cassandra) db 并尝试创建处理 User-Defined Types 的表,如下所示:

CREATE TYPE process (
    id int,
    discount float
);

CREATE TYPE service (
    id int,
    url text
);

CREATE TABLE data (
    id int PRIMARY KEY,
    fname text,
    lname text,
    service set<frozen<service>>,
    monthly_process frozen<process>
);

我的困惑是如何将数据插入到我的 data 表中。问题是我混淆了 processservice 类型在这里的工作方式以及如何在其中插入值?

我试过下面的例子,但它给了我一个错误:

insert into test (id, fname, lname, service, monthly_process ) 
values (1, 'abc', 'world', {'service': [{'id':1, 'url': 'some_url1'},
{'id':2, 'url': 'some_url2'}]}, {'id':1, 'discount': 10.0});

我得到的错误:

InvalidRequest: Error from server: code=2200 [Invalid query]
message="Invalid map literal for service of type set<frozen<service>>"

最佳答案

这是您的查询的工作版本;

insert into data (id, fname, lname, service, monthly_process)
values (2, 'abc', 'world', {{id: 1, url: 'some'}, {id : 2, url:'another'}}, {id:1, discount: 10.0});
  • service set<frozen<service>>格式为 {{id:1, url:'a'}, {id:2, url:'b'}}
  • monthly_process frozen<process>格式为 {id:1, discount: 10.0}

关于cassandra - 如何在具有用户定义类型的表中插入值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61690291/

相关文章:

java - 如何修复这个数据库查询?

grails - 在Grails中结合Cassandra和Hibernate

cassandra - com.datastax.driver.core.exceptions.InvalidQueryException : PRIMARY KEY part sequence found in SET part

cassandra - 有没有办法发现 Cassandra CQL 表结构?

vba - 将 Type 更改为 Class 会导致 ByRef 参数执行 ByVal

php - 是否有任何使用 cassandra 和 php 的简单网络项目可用?

Cassandra 节点无法完成加入操作

java - 使用 IN 子句过滤 Spark Cassandra 连接器

sql - 如何创建引用数据类型的表列的 Oracle 类型?

sql - 如何将 select 语句的结果集插入到嵌套表中?