2014-03-03 63 views
18

我在一個情況下,我需要改變複合主鍵如下:改變複合主鍵在卡桑德拉CQL 3.0

舊的主鍵:(ID,源,屬性名稱,的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在輸入 '主要'

沒有可行的替代方案

任何想法如何解決這個問題?更具體地說,我想知道有沒有辦法改變cassandra的主鍵?

回答

39

無法更改主鍵,因爲它定義了數據物理存儲的方式。

您可以使用新的主鍵創建一個新表,從舊的表中複製數據,然後刪除舊的表。

+0

非常感謝Mikhali! – aroyc

+0

我試過以下使用cqlsh, ALTER COLUMNFAMILY mycolumnfamily RENAME key TO key1;這完美的作品。當試圖這個我也有以下建議。使用@Mikhail添加,修改,刪除我們不能使用這些修改主鍵嗎? – udarakr

+0

你如何重命名錶格?你能提供一個完整的例子嗎? –