У меня есть таблица 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 "? Есть ли способ заставить это сделать, помимо того, что нужно сбросить и воссоздать представление?
Вы можете показать DDL для своего стола и просмотра? – Hambone
Аа, теперь я понимаю. Это довольно рассол. К сожалению, поскольку объекты могут быть привязаны к x_view, я не думаю, что это возможно, не отбрасывая и не создавая представление. Надеюсь, кто-то докажет, что я неправ. Например, проблема заключается в том, что если у вас есть другое представление, которое читает x_view и рассчитывает на наличие столбца a, вы заметите, что когда вы попытаетесь изменить представление, оно не позволит вам до тех пор, пока вы не свернете зависимости от A. Опять , Я надеюсь, что кто-то еще знает, каким образом я этого не делаю. – Hambone
Да, PostgreSQL не знает, как это сделать. Патчи приветствуются;), но на данный момент все, что вы можете сделать, это сбросить и воссоздать представление. –