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

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

  • Отбросьте все зависимые объекты,
  • Измените представление,
  • Снова заново создайте все зависимые объекты.

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

Ответы

Ответ 1

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

  • Не меняйте порядок, это не это важно, просто измените свой запрос:

    SELECT a, b FROM view_name;

    SELECT b, a FROM view_name;

  • Когда вам нужно изменить тип данных столбца, вы должны проверить зависимых объектов. Они могут имеют проблемы с этим новым тип данных. Просто дайте определение этот объект и воссоздать после изменения. Информационная_схема и pg_catalog поможет вам.

  • Внесите все изменения в один сделка.

Ответ 2

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