Как редактировать хранимую процедуру PostgreSQL?
Я медленно перехожу из MSSQL в PostgreSQL.
В MSSQL я мог бы вызвать редактирование уже сохраненной процедуры или функции, а оболочка администрирования (SQL Server Management Studio) показала мне текст процедуры, поэтому мне не нужно было хранить его исходный код где-то в текстовом файле.
Как сделать то же самое с PostgreSQL удобным способом? Я использую pgAdmin III.
Ответы
Ответ 1
В официальных дистрибутивах Postgres есть 2 клиента - один CLI psql
и один графический интерфейс pgAdmin
. Оба поддерживают то, что вы хотите: для psql
it \ef
и для pgAdmin
- щелкните правой кнопкой мыши по функции, вкладкам "Свойства", "Код".
Ответ 2
В pgAdmin вы можете сделать свою жизнь проще, если вы активируете эту опцию:
Файл → Параметры.. → Инструмент запросов → [x] Скопировать SQL из основной формы в диалог SQL
Затем все, что отображается на панели SQL, будет скопировано в новое окно Query Tool. Итак, выберите функцию в обозревателе объектов и щелкните значок увеличительного стекла на панели инструментов.
Помните об открытой ошибке в текущей версии 1.14.2. По умолчанию public
имеет привилегии EXECUTE
для функций. Вы можете REVOKE
эту привилегию, что полезно только для функций SECURITY DEFINER
. Но этот REVOKE
отсутствует в запрограммированных DDL-операциях с обратной связью из pgAdmin (NULL запутался с пустым ACL). Осторожно, если вы удалите и воссоздаете такую функцию!
Ответ 3
Это также удобный способ редактировать код и тестировать его.
1) Извлеките код требуемой функции SQL из pgAdmin.
2) Поместите код с помощью функции в файл .sql.
3) Создайте файл оболочки /bat в том же каталоге с файлом file.sql:
psql -U postgres dbname < file.sql
4) Поместите ярлык для файла оболочки /bat в панель быстрого доступа.
5) Отредактируйте файл с помощью своего любимого текстового редактора и нажмите ярлык, чтобы обновить функцию.
Ответ 4
phpPgAdmin позволит вам редактировать хранимые процедуры и редактировать их в интерфейсе. Комментарий, оставшийся под вашим вопросом о хранении их снаружи для контроля версий, также рекомендуется.
Ответ 5
щелкните правой кнопкой мыши по функции в дереве объектов (слева) → Скрипты → Script CREATE
-или -
Выполнить новый SQL-запрос → код копирования "создать или заменить функцию..." на него
Затем отредактируйте Script и не забудьте выполнить его