powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / как узнать DDL какого либо объекта (функции, триггера)
8 сообщений из 8, страница 1 из 1
как узнать DDL какого либо объекта (функции, триггера)
    #32445700
Подскажите каким образом узнать DDL объекта в PostgreSQL ?
version 7.2
...
Рейтинг: 0 / 0
как узнать DDL какого либо объекта (функции, триггера)
    #32446172
Shweik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все описания DDL можно получить при помощи оператора SELECT
Имена системных таблиц по умолчанию начинаются с pg_
Например В psql есть комманда \df+
Она выполняет вот такой запрос:
SELECT CASE WHEN p.proretset THEN 'setof ' ELSE '' END ||
pg_catalog.format_type(p.prorettype, NULL) as "Тип данных результата",
n.nspname as "Схема",
p.proname as "Имя",
pg_catalog.oidvectortypes(p.proargtypes) as "Типы данных аргументов",
u.usename as "Владелец",
l.lanname as "Язык",
p.prosrc as "Исходный текст",
pg_catalog.obj_description(p.oid, 'pg_proc') as "Описание"
FROM pg_catalog.pg_proc p
LEFT JOIN pg_catalog.pg_namespace n ON n.oid = p.pronamespace
LEFT JOIN pg_catalog.pg_language l ON l.oid = p.prolang
LEFT JOIN pg_catalog.pg_user u ON u.usesysid = p.proowner
WHERE p.prorettype <> 'pg_catalog.cstring'::pg_catalog.regtype
AND p.proargtypes[0] <> 'pg_catalog.cstring'::pg_catalog.regtype
AND NOT p.proisagg
AND pg_catalog.pg_function_is_visible(p.oid)
ORDER BY 2, 3, 1, 4;
Аналогично можно получить свойства и DDL практически любого объекта.
...
Рейтинг: 0 / 0
как узнать DDL какого либо объекта (функции, триггера)
    #32446427
отлично, так я могу увидеть DDL функций, а есть возможность посмотреть DDL триггера?
...
Рейтинг: 0 / 0
как узнать DDL какого либо объекта (функции, триггера)
    #32448254
Shweik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не помню - специально в предыддущем посте я писал про таблицы pg_* В них все описано есть,
А что где конкретно -RTFM.
...
Рейтинг: 0 / 0
как узнать DDL какого либо объекта (функции, триггера)
    #32449550
Shweik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С утра просматривал старые скрипты в мусорнике и вот чего вспомнил:
--Имя и определение тригеров для данной таблицы
--Дамп комманды "\d mytiblya"
SELECT t.tgname, pg_catalog.pg_get_triggerdef(t.oid)
FROM pg_catalog.pg_trigger t
WHERE t.tgrelid = (SELECT c.oid FROM pg_catalog.pg_class c
LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE pg_catalog.pg_table_is_visible(c.oid)
AND c.relname ~ '^mytiblya$')
AND (not tgisconstraint OR NOT EXISTS (SELECT 1 FROM
pg_catalog.pg_depend d JOIN pg_catalog.pg_constraint c ON (d.refclassid =
c.tableoid AND d.refobjid = c.oid) WHERE d.classid = t.tableoid
AND d.objid = t.oid AND d.deptype = 'i' AND c.contype = 'f'));
Опятть таки скажу - все это есть в коде psql!
RTFM и да пребудет с вами Шворц!
...
Рейтинг: 0 / 0
как узнать DDL какого либо объекта (функции, триггера)
    #32450528
yurchello
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А не проще pgAdmin (под иксы есть, и под винды) ???
он даёт DDL всех объектов в базе.
...
Рейтинг: 0 / 0
как узнать DDL какого либо объекта (функции, триггера)
    #32451370
пытаюсь выполнить предложенный запрос, вылетает ошибка

parser: parse error at or near "("
подскажите в чём причина?
...
Рейтинг: 0 / 0
как узнать DDL какого либо объекта (функции, триггера)
    #32452069
mordoor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А не проще pgAdmin (под иксы есть, и под винды) ???
он даёт DDL всех объектов в базе.

Гы! А IMHO проще в psql набрать \d имя_таблицы и прочитать
описание триггеров. Вроде по-русски писал: --Дамп комманды "\d mytiblya"
Ну а "\df" вывалит описание всех функций в данной базе
А из программы я делаю что-то вроде
select proname,prosrc from pg_proc;
И вообще раз увас стоит какой-то древний и заведомо не локализированный Постгрес - вот вам кусочек вывода команнды \?
(только учтите что это все относится к PG 7.4 - могут мыть мелкие отличия-
впрочем все эти хваленые PGAdminы тоже соскрипом работают с разными версиями постгреса 8=) )
И лично я советовал бы подумать об обновлении. 7.2 -отнюдь не
настолько стабильна чтобы за нее цепляться.
Список комманд psql :
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
Общие
  \c[onnect] [ИМЯБД|- [ПОЛЬЗОВАТЕЛЬ]]
                 подсоединиться к новой базе данных (текущая:  "mdb" )
  \cd [ДИР]      поменять текущую рабочую директорию
  \copyright     показать условия пользования и распространения PostgreSQL
  \encoding [КОДИРОВКА]
                 показать или установить кодировку клиента
  \h [ИМЯ]       подсказка по синтаксису SQL команд; * для всех команд
  \q             выйти из psql
  \set [ИМЯ [ЗНАЧЕНИЕ]]
                 установить внутреннюю переменную или показать все если нет параметров
  \timing        переключить режим замера запросов (в данный момент: выкл.)
  \unset ИМЯ     удалить внутреннюю переменную
  \! [КОМАНДА]   выполнить команду в оболочке или запустить интерактивную оболочку

Буфер запросов
  \e [ФАЙЛ]      редактировать текущий буфер запросов (или файл) с помощью внешнего редактора
  \g [ФАЙЛ]      отправить буфер запросов серверу (и записать результаты в файл или |канал)
  \p             показать содержимое буфера запросов
  \r             отчистить буфер запросов
  \s [ФАЙЛ]      показать историю или сохранить её в файл
  \w [ФАЙЛ]      записать текущий буфер запросов в файл

Ввод/Вывод
  \echo [СТРОКА] печатать строку в стандартный вывод
  \i ФАЙЛ        выполнить команды из файла
  \o ФАЙЛ        отправить все результаты запросов в файл или |канал
  \qecho [СТРОКА]
                 печатать текст в поток вывода запроса (см. \o)

Информационные
  \d [ИМЯ]       описать таблицу, индекс, последовательность или вид
  \d{t|i|s|v|S} [ПАТТЕРН] (добавьте  "+"  для более детальной информации)
                 показать таблицы/индексы/последовательности/виды/системные таблицы
  \da [ПАТТЕРН]  показать агрегатные функции
  \dc [ПАТТЕРН]  показать конверсии
  \dC            показать конверсии типов
  \dd [ПАТТЕРН]  показать коментарий для объекта
  \dD [ПАТТЕРН]  показать домены
  \df [ПАТТЕРН]  показать функции (добавьте  "+"  для более детальной информации)
  \dn [ПАТТЕРН]  показать схемы
  \do [ИМЯ]      показать операторы
  \dl            показать большие объекты, аналог \lo_list
  \dp [ПАТТЕРН]  показать привилегии доступа таблиц
  \dT [ПАТТЕРН]  показать типы данных (добавьте  "+"  для более детальной информации)
  \du [ПАТТЕРН]  показать пользователей
  \l             показать все базы данных (добавьте  "+"  для более детальной информации)
  \z [ПАТТЕРН]   показать привилегии доступа таблиц (аналог \dp)

Форматирование
  \a             переключиться между неформатированным и форматированным выводом
  \C [СТРОКА]    установить заголовок таблицы или убрать если строка пуста
  \f [СТРОКА]    показать или установить разделитель полей для неформатированного  вывода
  \H             переключиться в режим вывода в формате HTML (текущий формат: выкл.)
  \pset ИМЯ [ЗНАЧЕНИЕ]
                 установить опцию вывода таблиц
                 (ИМЯ := {format|border|expanded|fieldsep|footer|null|
                 recordsep|tuples_only|title|tableattr|pager})
  \t             показывать только строки (в данный момент: выкл.)
  \T [СТРОКА]    установить атрибуты HTML-тага <table>, или удалить если строка пуста
  \x             переключится в расширенный режим вывода (текущий: выкл.)

Copy, Большие объекты
  \copy ...      выполнить SQL COPY с потоком данных к хосту клиента
  \lo_export
  \lo_import
  \lo_list
  \lo_unlink     операции над большими объектами
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / как узнать DDL какого либо объекта (функции, триггера)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]