2015-10-08 6 views
1

У меня есть таблица x и вид x_view, основанный на x, в базе данных PostgreSQL.Изменить имя столбца в представлении PostgreSQL

х:

CREATE TABLE x (
A double precision 
); 

x_view:

CREATE VIEW x_view AS 
SELECT x.A; 

я переименовывается столбец х от А до В.

ALTER TABLE x RENAME COLUMN A to B 

Когда я затем посмотреть на определение обзора , Я вижу следующее:

SELECT x.B AS A from x; 

Когда я делаю «SELECT * FROM x_view», столбец, который должен теперь быть помечены B по-прежнему помечены A.

Почему точка зрения не автоматически изменить имя столбца, когда я выполнить «SELECT * FROM x_view "? Есть ли способ заставить это сделать, помимо того, что нужно сбросить и воссоздать представление?

+0

Вы можете показать DDL для своего стола и просмотра? – Hambone

+0

Аа, теперь я понимаю. Это довольно рассол. К сожалению, поскольку объекты могут быть привязаны к x_view, я не думаю, что это возможно, не отбрасывая и не создавая представление. Надеюсь, кто-то докажет, что я неправ. Например, проблема заключается в том, что если у вас есть другое представление, которое читает x_view и рассчитывает на наличие столбца a, вы заметите, что когда вы попытаетесь изменить представление, оно не позволит вам до тех пор, пока вы не свернете зависимости от A. Опять , Я надеюсь, что кто-то еще знает, каким образом я этого не делаю. – Hambone

+0

Да, PostgreSQL не знает, как это сделать. Патчи приветствуются;), но на данный момент все, что вы можете сделать, это сбросить и воссоздать представление. –

ответ

0

Вы можете использовать ALTER TABLE x_view RENAME COLUMN A to B , чтобы переименовать вашу колонку просмотра.

Источник: ответ @Peter Eisentraut here и я проверил в своей базе данных.

Смежные вопросы