Как узнать столбец родительской таблицы, указанный в других таблицах - PullRequest
0 голосов
/ 04 февраля 2019

Предположим, у меня есть таблицы A, B, C, D и т. Д.

Теперь в таблице A есть столбец с именем id_event.Моя схема базы данных содержит так много таблиц, что мне трудно определить, где использовался этот столбец id_event (в других таблицах).

Не могли бы вы предоставить мне любой запрос или метод, который может помочь мне решить эту проблему?проблема?

Примечание. Я использую Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64-битная версия

1 Ответ

0 голосов
/ 04 февраля 2019

Быстрый вариант - запросить USER_TAB_COLUMNS, который содержит все столбцы в вашей схеме, а также таблицы, к которым он принадлежит:

SELECT table_name
  FROM user_tab_columns
 WHERE column_name = 'ID_EVENT';

Другой вариант: если вы обратили внимание на то, что высделайте и создайте хорошую схему, вы создали первичные ключи, ограничения внешнего ключа и прочее, затем вы можете запросить USER_CONSTRAINTS и USER_CONS_COLUMNS, чтобы получить интересующую вас информацию. Вотпример;Теперь, когда вы знаете, где искать, не стесняйтесь изменить этот запрос (или написать свой).Общая идея заключается в проверке типа ограничения R (ссылочная целостность).

SELECT n.constraint_name,
       n.table_name,
       n.r_constraint_name,
       r.table_name referenced_table_name,
       c.column_name,
       c.table_name,
       c1.column_name
  FROM user_constraints n
       JOIN user_constraints r ON n.r_constraint_name = r.constraint_name
       JOIN user_cons_columns c ON c.constraint_name = r.constraint_name
       JOIN user_cons_columns c1 ON c1.constraint_name = n.constraint_name
 WHERE     n.constraint_type = 'R'
       AND c.column_name = 'ID_EVENT';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...