31

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

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

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

我发出了以下(类似mysql的)命令:

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

我收到以下错误:

错误请求:第 1:38 行在输入“PRIMARY”处没有可行的替代方案

知道如何解决这个问题吗?更具体地说,我想知道是否有任何方法可以更改 cassandra 中的主键?

4

2 回答 2

66

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

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

于 2014-03-03T06:24:53.493 回答
1

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

于 2016-07-22T15:03:51.220 回答