【问题标题】:How to update and replace in Cassandra a UDT field value?如何在 Cassandra 中更新和替换 UDT 字段值?
【发布时间】:2020-10-05 14:48:46
【问题描述】:

Cassandra 是否支持更新 UDT 字段值?比如用新值替换它?

我有 user_fav_payment_method UDT,我需要用借记卡代替现金:

update user_ratings set 
user_fav_payment_method{'cash'} = {'debit cards'}
where rating_id = 66;

这段代码是错误的,但我需要做类似的事情,我该怎么做?

【问题讨论】:

    标签: cassandra


    【解决方案1】:

    documentation:

    在 Cassandra 3.6 及更高版本中,仅包含非集合字段的用户定义类型可以更新单个字段值。使用 UPDATE 命令更新用户定义类型数据中的单个字段。所需的键值对在命令中定义。为了更新,UDT 必须在 CREATE TABLE 命令中定义为未冻结的数据类型。

    您可以使用. 表示法仅更新非冻结 UDT 的单个字段,如下所示:

    cqlsh> use test;
    cqlsh:test> create type payment_method ( method text, data text);
    cqlsh:test> create table users (id int primary key, pay_method payment_method);
    cqlsh:test> insert into users (id, pay_method) values (1, {method: 'cash', data: 'usd'});
    cqlsh:test> select * from users;
    
     id | pay_method
    ----+-------------------------------
      1 | {method: 'cash', data: 'usd'}
    
    (1 rows)
    
    cqlsh:test> update users set pay_method.method = 'card' where id = 1;
    cqlsh:test> select * from users;
    
     id | pay_method
    ----+-------------------------------
      1 | {method: 'card', data: 'usd'}
    
    (1 rows)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-15
      • 1970-01-01
      • 2015-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-08
      • 2018-11-24
      相关资源
      最近更新 更多