我们可以为集合数据类型添加主键吗?
Posted
技术标签:
【中文标题】我们可以为集合数据类型添加主键吗?【英文标题】:Can we add primary key to collection datatypes? 【发布时间】:2016-04-18 06:06:27 【问题描述】:当我尝试使用 contains 关键字检索表时,它会提示 "Cannot use CONTAINS relation on non collection column col1"
但当我尝试使用创建表时
CREATE TABLE test (id int,address map<text, int>,mail list<text>,phone set<int>,primary key (id,address,mail,phone));
提示"Invalid collection type for PRIMARY KEY component phone"
【问题讨论】:
【参考方案1】:Cassandra 的基础之一是您不能修改主键。永远记住这一点。
您不能将集合用作主键,除非它被冻结,这意味着您无法修改它。
这会起作用
CREATE TABLE test (id int,address frozen<map<text, int>>,mail frozen<list<text>>,phone frozen<set<int>>,primary key (id,address,mail,phone));;
不过,我认为你应该看看这个文档:http://www.datastax.com/dev/blog/cql-in-2-1
您可以在 cql 2.1 之后将二级索引放在集合上。您可能想要使用该功能。
【讨论】:
以上是关于我们可以为集合数据类型添加主键吗?的主要内容,如果未能解决你的问题,请参考以下文章