2015-11-03 3 views
1

Мне нужно изменить множество столбцов в таблице Vertica и решил полностью отказаться от таблицы и создать новую. Мне также нужны сценарии «отменить», готовые возвратить изменения, если это необходимо (с использованием миграции mybatis).Как переименовать таблицу вместе с проекциями в Vertica?

Это мой план:

rename mytable to mytable_backup 

create mytable 
create projection mytable_super (as select from mytable) 


--undo 
drop mytable if exists 
rename mytable_backup to mytable 

оригинальные туЬаОе также был создан с проекцией. Вышеприведенный скрипт дает ошибку, поскольку проецирование уже существует.

DBCException: SQL Error [4482] [42710]: [Vertica][VJDBC](4482) ROLLBACK:   Projection with base name "mytable_super" already exists 

Я считаю, что при переименовании исходной таблицы основной проектор не переименовывается.

Каков наилучший способ переименования таблицы с проекциями в vertica? Или какой лучший способ создать резервную копию стола и вернуться обратно?

ответ

1

Вам также понадобится rename the projections.

alter projection mytable_super rename to mytable_super_backup; 
+0

Можно ли переименовать выступы? будут ли мешать любому материалу, который Vertica делает в фоновом режиме с точки зрения управления проекциями/идентификаторами объектов и т. д.? – Gadam

+0

Нет проблем с переименованием прогнозов, если у вас нет запросов, которые используют их напрямую (например, Live Aggregate Projections) или других сценариев, которые зависят от имени. Тем не менее, нет ничего внутреннего для Vertica. – woot

+0

Спасибо, еще один вопрос: если позже я добавлю/изменим поле в таблице, мне также нужно добавить/изменить в проекции; или это автоматически позаботится? – Gadam