Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / как узнать DDL какого либо объекта (функции, триггера) / 8 сообщений из 8, страница 1 из 1
17.03.2004, 15:49
    #32445700
как узнать DDL какого либо объекта (функции, триггера)
Подскажите каким образом узнать DDL объекта в PostgreSQL ?
version 7.2
...
Рейтинг: 0 / 0
17.03.2004, 19:39
    #32446172
Shweik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как узнать DDL какого либо объекта (функции, триггера)
Все описания 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
18.03.2004, 08:01
    #32446427
как узнать DDL какого либо объекта (функции, триггера)
отлично, так я могу увидеть DDL функций, а есть возможность посмотреть DDL триггера?
...
Рейтинг: 0 / 0
18.03.2004, 22:37
    #32448254
Shweik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как узнать DDL какого либо объекта (функции, триггера)
Не помню - специально в предыддущем посте я писал про таблицы pg_* В них все описано есть,
А что где конкретно -RTFM.
...
Рейтинг: 0 / 0
19.03.2004, 15:35
    #32449550
Shweik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как узнать DDL какого либо объекта (функции, триггера)
С утра просматривал старые скрипты в мусорнике и вот чего вспомнил:
--Имя и определение тригеров для данной таблицы
--Дамп комманды "\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
21.03.2004, 15:43
    #32450528
yurchello
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как узнать DDL какого либо объекта (функции, триггера)
А не проще pgAdmin (под иксы есть, и под винды) ???
он даёт DDL всех объектов в базе.
...
Рейтинг: 0 / 0
22.03.2004, 13:35
    #32451370
как узнать DDL какого либо объекта (функции, триггера)
пытаюсь выполнить предложенный запрос, вылетает ошибка

parser: parse error at or near "("
подскажите в чём причина?
...
Рейтинг: 0 / 0
22.03.2004, 21:23
    #32452069
mordoor
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как узнать DDL какого либо объекта (функции, триггера)
А не проще 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
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / как узнать DDL какого либо объекта (функции, триггера) / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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