Size: a a a

pgsql – PostgreSQL

2021 March 24

MS

Maxim Sherstuk in pgsql – PostgreSQL
John Doe
Добрый день

Подскажите пожалуйста
1. Правильно понимаю, чтобы использовать процедурные языки вроде PL/pgSQL нужно их предварительно установить через createlang? Всегда ли нужно включать отдельно или есть готовые сборки?
2. Не получается загуглить как вывести список установленных процедурных языков. Можете подсказать?
вообще судя по документации, всего дистрибутив включает четыре процедурных языка: PL/pgSQL, PL/Tcl, PL/Perl и PL/Python. Первый стоит изначально, три других ставятся расширениями, например, CREATE EXTENSION plpythonu. Аналогично для перла и tcl. А узнать установлен ли язык можно тогда через перечь установленных расширений искать
источник

MS

Maxim Sherstuk in pgsql – PostgreSQL
у меня был опыт написания триггерных функций только на питоне (из не стандартных яп базы), очень здорово) особенно обработка ошибок в нормальные логи
источник

МШ

Михаил Шурутов... in pgsql – PostgreSQL
Maxim Sherstuk
вообще судя по документации, всего дистрибутив включает четыре процедурных языка: PL/pgSQL, PL/Tcl, PL/Perl и PL/Python. Первый стоит изначально, три других ставятся расширениями, например, CREATE EXTENSION plpythonu. Аналогично для перла и tcl. А узнать установлен ли язык можно тогда через перечь установленных расширений искать
Не вводите человеков в заблуждение! Язык устанавливается командой CREATE LANGUAGE: https://postgrespro.ru/docs/postgresql/11/sql-createlanguage
источник

MS

Maxim Sherstuk in pgsql – PostgreSQL
ага, но там же написано "Начиная с PostgreSQL 9.1, большинство процедурных языков были преобразованы в «расширения», так что они теперь устанавливаются посредством CREATE EXTENSION, а не CREATE LANGUAGE"
источник

VY

Victor Yegorov in pgsql – PostgreSQL
Михаил Шурутов
Не вводите человеков в заблуждение! Язык устанавливается командой CREATE LANGUAGE: https://postgrespro.ru/docs/postgresql/11/sql-createlanguage
да, но теперь это всё часть расширения, т.е. руками делать CREATE LANGUAGE не надо
источник

МШ

Михаил Шурутов... in pgsql – PostgreSQL
Однако...
источник

JD

John Doe in pgsql – PostgreSQL
Спасибо всем, я проверил: стоит PL pgSQL, ,теперь не пойму, почему не могу запускать анонимные блоки, пользователь тот же самый, что и владелец plpgsql
источник

JD

John Doe in pgsql – PostgreSQL
источник

JD

John Doe in pgsql – PostgreSQL
Беру простейшие примеры из инета c declare и begin/end - выдаёт ошибку
источник

MS

Maxim Sherstuk in pgsql – PostgreSQL
какая ошибка, принтани что запускаешь
источник

MS

Maxim Sherstuk in pgsql – PostgreSQL
John Doe
Беру простейшие примеры из инета c declare и begin/end - выдаёт ошибку
do $$ begin execute 'select 1'; end $$;
источник

JD

John Doe in pgsql – PostgreSQL
Добавил $$ - получилось
источник

JD

John Doe in pgsql – PostgreSQL
Спасибо

По-моему в интернете немного противеречивое описание синтаксиса, в разных источниках разная информация. Или я просто не ту документацию читаю?
источник

MS

Maxim Sherstuk in pgsql – PostgreSQL
John Doe
Спасибо

По-моему в интернете немного противеречивое описание синтаксиса, в разных источниках разная информация. Или я просто не ту документацию читаю?
чего только нет в интернете, тут пример понятный https://postgrespro.ru/docs/enterprise/12/sql-do просто часто опускают $$ так же как понимание того, что нужно запрос выполнять через psql или IDE, или вообще подключившись к базе и что она вообще есть :D
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
John Doe
Спасибо

По-моему в интернете немного противеречивое описание синтаксиса, в разных источниках разная информация. Или я просто не ту документацию читаю?
Читайте только документацию PostgreSQL, если есть сомнения — там правильнее всего. ;)
источник

МШ

Михаил Шурутов... in pgsql – PostgreSQL
Maxim Sherstuk
чего только нет в интернете, тут пример понятный https://postgrespro.ru/docs/enterprise/12/sql-do просто часто опускают $$ так же как понимание того, что нужно запрос выполнять через psql или IDE, или вообще подключившись к базе и что она вообще есть :D
Это, вообще-то дока на enterprise-версию. Лучше использовать доку по оригинальному ПГ: https://postgrespro.ru/docs/postgresql/12/sql-do
источник

DB

Dmitry Balalin in pgsql – PostgreSQL
Как можно узнать все таблицы с внешним ключом ссылающимся на один и тот же первичный ключ?
источник

MS

Maxim Sherstuk in pgsql – PostgreSQL
да, сорри, там как-то в поиске выскочило. Там в документации в большинстве мест отличия только в имени СУБД - видимо подставляются автоматически
источник

JD

John Doe in pgsql – PostgreSQL
Maxim Sherstuk
чего только нет в интернете, тут пример понятный https://postgrespro.ru/docs/enterprise/12/sql-do просто часто опускают $$ так же как понимание того, что нужно запрос выполнять через psql или IDE, или вообще подключившись к базе и что она вообще есть :D
Я пытаюсь через тот же инструмент, с помощью которого обычные запросы к базе делаю
источник

МШ

Михаил Шурутов... in pgsql – PostgreSQL
Dmitry Balalin
Как можно узнать все таблицы с внешним ключом ссылающимся на один и тот же первичный ключ?
\d <tablename>, где <tablename> - имя таблицы с искомым первичным ключом.
источник