Есть ли простой способ увидеть код, используемый для создания представления, используя клиент командной строки PostgreSQL?
Что-то вроде SHOW CREATE VIEW
от MySQL.
Есть ли простой способ увидеть код, используемый для создания представления, используя клиент командной строки PostgreSQL?
Что-то вроде SHOW CREATE VIEW
от MySQL.
Мне нужно вернуться сюда, чтобы посмотреть pg_get_viewdef
(как это помнить!!), поэтому искал более запоминающуюся команду... и получил ее:
\d+ viewname
Вы можете увидеть похожие команды, набрав \?
в командной строке pgsql.
Бонусный совет: команда emacs sql-postgres
делает pgsql намного приятнее (редактирование, копирование, вставка, история команд).
select pg_get_viewdef('viewname', true)
Список всех этих функций доступен в руководстве:
http://www.postgresql.org/docs/current/static/functions-info.html
select definition from pg_views where viewname = 'my_view'
Если вы хотите версию ANSI SQL-92:
select view_definition from information_schema.views where table_name = 'view_name';
GoodNews от v.9.6 и выше, редактирование View теперь родное из psql. Просто вызовите приведенную ниже команду, определения представлений отобразятся в вашем сконфигурированном редакторе.
[email protected]=# \ev {your_view_names}
Бонус. Некоторая полезная команда для взаимодействия с буфером запросов.
Query Buffer
\e [FILE] [LINE] edit the query buffer (or file) with external editor
\ef [FUNCNAME [LINE]] edit function definition with external editor
\ev [VIEWNAME [LINE]] edit view definition with external editor
\p show the contents of the query buffer
\r reset (clear) the query buffer
\s [FILE] display history or save it to file
\w FILE write query buffer to file
Это маленькая вещь, чтобы указать.
Используя функцию pg_get_viewdef или pg_views или information_schema.views, вы всегда получите переписанную версию вашего исходного DDL.
Переизданная версия может совпадать или не совпадать с исходным сценарием DDL.
Если менеджер правил переписывает ваше определение представления, ваша исходная DLL будет потеряна, и вы сможете прочитать только переписанную версию определения представления.
Не все виды переписываются, но если вы используете sub-select или объединения, вероятно, ваши представления будут переписаны.