我遇到需要更改复合主键的情况,如下所示:
旧主键:(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中的主键?
答案 0 :(得分:54)
无法更改主键,因为它定义了数据的物理存储方式。
您可以使用新主键创建新表,从旧主键复制数据,然后删除旧表。
答案 1 :(得分:1)
如果有可能使用旧的主键,您可以创建一个物化视图:http://docs.datastax.com/en/cql/3.3/cql/cql_using/useCreateMV.html 但如果您需要旧密钥,则仅建议使用。