Изменить составной первичный ключ в Cassandra CQL 3.0
Я нахожусь в ситуации, когда мне нужно изменить составной первичный ключ следующим образом:
Старый первичный ключ: (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 нет подходящей альтернативы на входе "ПЕРВИЧНЫЙ"
есть идеи как обойти эту проблему? более конкретно я хочу знать, есть ли способ изменить первичный ключ в Кассандре?
2 ответа
Невозможно изменить первичный ключ, так как он определяет, как физически хранятся ваши данные.
Вы можете создать новую таблицу с новым первичным ключом, скопировать данные из старого и затем удалить старую таблицу.
Если есть возможность использовать старый первичный ключ, вы можете создать материализованное представление: http://docs.datastax.com/en/cql/3.3/cql/cql_using/useCreateMV.html Но это только рекомендуется, если вы понадобится старый ключ.