powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Что то не могу догнать, как узнать все Dependence для VIEW
7 сообщений из 7, страница 1 из 1
Что то не могу догнать, как узнать все Dependence для VIEW
    #33148866
oracle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
допустим есть view xxxx как узнать, из каких таблиц берутся данные, нашел я
pg_depend таблицу, ну что то не понимаю как заюзать ее, может у кого есть какая инфа по этому поводу.

O*R*A*C*L*E
(Don't despair my little fried...)
...
Рейтинг: 0 / 0
Что то не могу догнать, как узнать все Dependence для VIEW
    #33149217
LeXa NalBat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В psql-е: \d xxxx

=> \d pg_catalog.pg_tables
View "pg_catalog.pg_tables"
Column | Type | Modifiers
-------------+---------+-----------
schemaname | name |
tablename | name |
tableowner | name |
tablespace | name |
hasindexes | boolean |
hasrules | boolean |
hastriggers | boolean |
View definition:
SELECT n.nspname AS schemaname, c.relname AS tablename, pg_get_userbyid(c.relowner) AS tableowner, t.spcname AS "tablespace", c.relhasindex AS hasindexes, c.relhasrules AS hasrules, c.reltriggers > 0 AS hastriggers
FROM pg_class c
LEFT JOIN pg_namespace n ON n.oid = c.relnamespace
LEFT JOIN pg_tablespace t ON t.oid = c.reltablespace
WHERE c.relkind = 'r'::"char";
...
Рейтинг: 0 / 0
Что то не могу догнать, как узнать все Dependence для VIEW
    #33151111
oracle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, а вообще можно ли как нить это заюзать основываясь на системных таблицах. (Просто все будет вызываться из проги...)


O*R*A*C*L*E
(Don't despair my little fried...)
...
Рейтинг: 0 / 0
Что то не могу догнать, как узнать все Dependence для VIEW
    #33151693
LeXa NalBat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
select definition from pg_views;
...
Рейтинг: 0 / 0
Что то не могу догнать, как узнать все Dependence для VIEW
    #33151755
oracle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так это вернет мне только запрос, а мне надо чтобы возратило таблицы на которых этот запрос замешан, можно конечно его распарсить, но это такой гемор, что и думать про это просто не охото....

O*R*A*C*L*E
(Don't despair my little fried...)
...
Рейтинг: 0 / 0
Что то не могу догнать, как узнать все Dependence для VIEW
    #33152596
LeXa NalBat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oracleмне надо чтобы возратило таблицы на которых этот запрос замешанИМХО, странная задача. :( Поясните плиз, откуда она возникла. Недавно задавали похожий вопрос . Навскидку, запрос может быть "замешан" на таблицах, представлениях, последовательностях, функциях. А уж на чем в свою очередь могут быть "замешаны" функции, входящие в этот запрос... :)

Oracleнашел я pg_depend таблицу, ну что то не понимаю как заюзать ееВроде бы заюзать можно. Есть дока и такая информация:
Код: 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.
nalbat=> create table t_test ( id integer );
CREATE TABLE
nalbat=> select oid from pg_class where relname='t_test';
   oid
---------
  7242632 
( 1  row)

nalbat=> select * from pg_depend where objid= 7242632  or refobjid= 7242632 ;
 classid |  objid  | objsubid | refclassid | refobjid | refobjsubid | deptype
---------+---------+----------+------------+----------+-------------+---------
     1247  |  7242633  |         0  |        1259  |   7242632  |            0  | i
     1259  |  7242632  |         0  |       16672  |      2200  |            0  | n
( 2  rows)

nalbat=> select * from pg_depend where objid= 7242633  or refobjid= 7242633 ;
 classid |  objid  | objsubid | refclassid | refobjid | refobjsubid | deptype
---------+---------+----------+------------+----------+-------------+---------
     1247  |  7242633  |         0  |        1259  |   7242632  |            0  | i
( 1  row)

nalbat=> create view v_test as select * from t_test;
CREATE VIEW
nalbat=> select oid from pg_class where relname='v_test';
   oid
---------
  7242634 
( 1  row)

nalbat=> select * from pg_depend where objid= 7242634  or refobjid= 7242634 ;
 classid |  objid  | objsubid | refclassid | refobjid | refobjsubid | deptype
---------+---------+----------+------------+----------+-------------+---------
     1247  |  7242635  |         0  |        1259  |   7242634  |            0  | i
     1259  |  7242634  |         0  |       16672  |      2200  |            0  | n
    16410  |  7242636  |         0  |        1259  |   7242634  |            0  | i
    16410  |  7242636  |         0  |        1259  |   7242634  |            0  | n
( 4  rows)

nalbat=> select * from pg_depend where objid= 7242635  or refobjid= 7242635 ;
 classid |  objid  | objsubid | refclassid | refobjid | refobjsubid | deptype
---------+---------+----------+------------+----------+-------------+---------
     1247  |  7242635  |         0  |        1259  |   7242634  |            0  | i
( 1  row)

nalbat=> select * from pg_depend where objid= 7242636  or refobjid= 7242636 ;
 classid |  objid  | objsubid | refclassid | refobjid | refobjsubid | deptype
---------+---------+----------+------------+----------+-------------+---------
    16410  |  7242636  |         0  |        1259  |   7242634  |            0  | i
    16410  |  7242636  |         0  |        1259  |   7242632  |            1  | n
    16410  |  7242636  |         0  |        1259  |   7242634  |            0  | n
( 3  rows)

nalbat=> drop table t_test cascade;
NOTICE:  удаление снисходит до правило _RETURN напредставление v_test
NOTICE:  удаление снисходит до представление v_test
DROP TABLE
То есть можно проследить связь 7242634 -> 7242636 -> 7242632.
...
Рейтинг: 0 / 0
Что то не могу догнать, как узнать все Dependence для VIEW
    #33154421
oracle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще эта задача следующая - создается тул и в нем надо к примеру по имеющемуся представлению найти все объекты которые в него входят. Далее аналогичный проход по найденным объектам и так т.д. пока не нейдутся все .

А уже потом находятся связи и строятся диаграммы

O*R*A*C*L*E
(Don't despair my little fried...)
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Что то не могу догнать, как узнать все Dependence для VIEW
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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