如何在一个有用户定义类型的表中插入值?

问题描述 投票:0回答:1

我正在使用Scylla (Cassandra)数据库,并试图创建处理以下内容的表。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>>"
cassandra cql user-defined-types scylla
1个回答
1
投票

这里是你的查询的工作版本,格式是:CREATE TYPE process ( id int, discount float); CREATE TYPE ..;

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}
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.