Как изменить вид в PostgreSQL - PullRequest
       7

Как изменить вид в PostgreSQL

14 голосов
/ 29 августа 2010

PostgreSQL не позволяет изменять представление (т. Е. Добавлять столбцы, изменять порядок столбцов, добавлять критерии и т. Д.), Если оно имеет зависимые объекты.Это действительно раздражает, так как вы должны написать скрипт для:

  1. Отбросить все зависимые объекты,
  2. Изменить вид,
  3. Восстановить все зависимые объектыназад.

Я понимаю, что у разработчиков postgreSQL есть очень разумные соображения, чтобы предотвратить изменение представлений.Но есть ли у вас, ребята, какие-нибудь сценарии / кадры для выполнения всех этих ручных задач за один проход?

Ответы [ 2 ]

5 голосов
/ 29 августа 2010

Добавление новых столбцов не является проблемой, изменение типов данных или изменение порядка столбцов, вот где у вас возникают проблемы.

  1. Не меняйте порядок, это не такважно в любом случае, просто измените ваш запрос:

    ВЫБЕРИТЕ a, b ОТ имени_обмена;

    ВЫБЕРИТЕ b, имя_ ОТ ОТ;

  2. Когда вам нужноизменить тип данных столбца, вы также должны проверить зависимые объекты.У них могут быть проблемы с этим новым типом данных.Просто получите определение этого объекта и воссоздайте после изменений.Вы можете помочь information_schema и pg_catalog.

  3. Внести все изменения в одну транзакцию.
2 голосов
/ 14 августа 2014

Если я добавлю дополнительное «drop view xyz; commit;»перед оператором «создать или заменить представление xyz as ...», по крайней мере во многих случаях я решаю проблему блокировки, описанную выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...