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

lyr7nygr  于 2021-06-13  发布在  Cassandra
关注(0)|答案(1)|浏览(397)

我正在与锡拉(Cassandra)数据库,并试图创建表,这是处理 User-Defined Types 如下图所示:

  1. CREATE TYPE process (
  2. id int,
  3. discount float
  4. );
  5. CREATE TYPE service (
  6. id int,
  7. url text
  8. );
  9. CREATE TABLE data (
  10. id int PRIMARY KEY,
  11. fname text,
  12. lname text,
  13. service set<frozen<service>>,
  14. monthly_process frozen<process>
  15. );

我的困惑是如何在我的数据库中插入数据 data table。问题是我怎么搞不清楚 process 以及 service 类型在这里工作,如何在其中插入值?
我尝试了下面的例子,但它给了我一个错误:

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

我得到的错误:

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

sirbozc51#

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

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

相关问题