在cassandra CQL 3.0中更改复合主键

时间:2014-03-03 06:04:27

标签: cassandra composite-primary-key alter cql3 cqlsh

我遇到需要更改复合主键的情况,如下所示:

旧主键:(id,source,attribute_name,updated_at);

我想要的新主键:(source,id,attribute_name,updated_at);

我发出了以下(mysql like)命令:

ALTER TABLE general_trend_table 
DROP PRIMARY KEY, 
ADD PRIMARY KEY(source, id, attribute_name, updated_at);

我收到以下错误:

错误请求:第1:38行在输入'PRIMARY'时没有可行的选择

任何想法如何解决这个问题?更具体地说我想知道有没有办法改变cassandra中的主键?

2 个答案:

答案 0 :(得分:54)

无法更改主键,因为它定义了数据的物理存储方式。

您可以使用新主键创建新表,从旧主键复制数据,然后删除旧表。

答案 1 :(得分:1)

如果有可能使用旧的主键,您可以创建一个物化视图:http://docs.datastax.com/en/cql/3.3/cql/cql_using/useCreateMV.html 但如果您需要旧密钥,则仅建议使用。