我目前正在开发一个Cassandra 3数据库,其中一个表有一个如下定义的列:
column_name map<int, frozen <set<int>>>
如果必须在给定地图键 x 的情况下更改完整集的值,我只需要这样做:
UPDATE keyspace.table SET column_name[x] = {1,2,3,4,5} WHERE ...
问题是我需要在给定键的集合上插入值。我试过这个:
UPDATE keyspace.table SET column_name[x] = column_name[x] + {1} WHERE ...
但它返回:
语法异常:第1:41行在输入中没有可行的选择&#39; [&#39; (... SET column_name [x] = [column_name] [...)
我做错了什么?有谁知道如何以我需要的方式插入数据?
答案 0 :(得分:1)
由于地图的价值已冻结,因此您无法使用此类更新。
冻结值将多个组件序列化为单个值。非冻结类型允许更新单个字段。 Cassandra将冻结类型的值视为blob。必须覆盖整个值。
您必须阅读完整的地图,获取该项附加新项目的值,然后重新插入