我们可以为集合数据类型添加主键吗?

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 之后将二级索引放在集合上。您可能想要使用该功能。

【讨论】:

以上是关于我们可以为集合数据类型添加主键吗?的主要内容,如果未能解决你的问题,请参考以下文章

GCP:我们可以在扳手中修改现有表的主键吗

mysql表中一个表中可以有多个主键吗?

数据表中与主键联系的外键字段必须于主键同名吗

mysql表中一个表中可以有多个主键吗

SQL中的每一张表都必须设有主键吗

我们可以将现有列作为主键吗?