Я допустил ошибку в названии столбца в материализованном представлении Postgresql 9.4.Переименовать столбец в представлении: ошибка или функция?
Я посмотрел на документацию, синтаксис:
ALTER MATERIALIZED VIEW my_view_name
RENAME COLUMN old_name
TO new_name;
Он работал отлично.
Тогда у меня была такая же опечатка в не-материализованный вид. Я сделал копию пасты запроса, забыл удалить ключевое слово MATERIALIZED
и ... он сработал!
Страннее, если я стараюсь:
ALTER VIEW my_view_name
RENAME COLUMN old_name
TO new_name;
Это не работает, я получаю ошибку синтаксиса!
Другими словами: кажется, что я могу изменить имя столбца обычного вида, используя синтаксис из материализованного представления.
Это ошибка или функция?
Шаги для воспроизведения:
1) Создайте простую таблицу
CREATE TABLE films (
code char(5) CONSTRAINT firstkey PRIMARY KEY,
title varchar(40) NOT NULL
);
2) Создать представление как простой выбор:
CREATE VIEW view_films AS SELECT * FROM films;
3) Попробуйте переименовать колонка:
ALTER VIEW view_films RENAME COLUMN title TO new_title;
ERROR: syntax error at or near "COLUMN"
4) Попробуйте то же самое, но с ключевым словом MATERIALIZED
:
ALTER MATERIALIZED VIEW view_films RENAME COLUMN title TO new_title;
ALTER TABLE
Протестировано: изменение имени столбца из таблицы не влияет на результат представления (столбец по-прежнему имеет старое имя). –
См. Edit in answer; если это поможет. В сущности, вы должны повторно создать свое определение определения после изменения схемы таблицы. – Rahul