Как я могу найти все таблицы без ссылки на него - PullRequest
0 голосов
/ 17 декабря 2018

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

1 Ответ

0 голосов
/ 17 декабря 2018

Например:

SELECT u.table_name
  FROM user_tables u
 WHERE u.table_name NOT IN (SELECT c.table_name
                              FROM user_constraints rc
                                   JOIN user_constraints c
                                      ON c.constraint_name =
                                            rc.r_constraint_name
                             WHERE rc.constraint_type = 'R');

Или, если вы предпочитаете (NOT) EXISTS:

SELECT u.table_name
  FROM user_tables u
 WHERE NOT EXISTS
          (SELECT NULL
             FROM user_constraints rc
                  JOIN user_constraints c
                     ON c.constraint_name = rc.r_constraint_name
            WHERE     rc.constraint_type = 'R'
                  AND u.table_name = c.table_name);
...