在Cassandra CQL 3.0中修改复合主键

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中更改主键?

2个回答

69

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

您可以创建一个新表并将新的主键复制到新表中,然后删除旧表。


1
我尝试使用cqlsh执行以下操作: ALTER COLUMNFAMILY mycolumnfamily RENAME key TO key1; 这个命令完美地运行了。在尝试这个命令时,我还得到了以下建议:ADD、ALTER、DROP、WITH @Mikhail,我们不能使用这些命令来更改主键吗? - udarakr
1
你怎么重命名表格?能提供一个完整的例子吗? - Justin Thomas

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接