#sql #amazon-web-services #amazon-redshift #ddl
Вопрос:
Я создал таблицы, а затем мне захотелось изменить типы столбцов.
Сейчас, когда я вижу DDL или его схему, столбец units
определяется следующим образом.
units varchar(100) NULL encode lzo
Я хотел бы изменить такие, как numeric(12,0)
. Так что я попытался следовать
ALTER TABLE table1 ALTER COLUMN units TYPE numeric(12,0);
Но он вернул следующую ошибку
Invalid operation: target data type "pg_catalog.numeric" is not supported;
В чем основная причина этого?
И как это исправить?
Я подтвердил numeric
, что это определено в некоторых схемах таблиц.
Если у кого-то есть мнение или комментарий, пожалуйста, дайте мне знать, спасибо.
Комментарии:
1. Есть некоторые ограничения, упомянутые в ALTER TABLE — Amazon Redshift -интересно, влияют ли они на вашу колонку? Например, тип сжатия, значение по умолчанию, УНИКАЛЬНЫЙ, ПЕРВИЧНЫЙ КЛЮЧ или ВНЕШНИЙ КЛЮЧ. Возможно, вам потребуется создать новый столбец и использовать ОБНОВЛЕНИЕ для преобразования значений. Затем удалите исходный столбец и переименуйте его обратно в исходный. Если вы сделаете это, также выполните ОЧИСТКУ таблицы, так как операция обновления фактически создает новые строки и помечает старые строки для удаления.