Воскресенье
20.09.2020
06:49


Форма входа


Приветствую Вас Гость | RSS
Статьи по ORACLE, PL/SQL, Java и немного по SHELL (BASH),...
Главная Каталог статей Регистрация Вход
Главная » Статьи » ORACLE » ORACLE, PL/SQL

Поиск ссылочных ключей

SELECT
  'Наследник' AS "Наследник",
  a.table_name 
AS "Ссылочная таблица",
  a.constraint_name 
AS "Имя ссылочного ключа",
  a.constraint_type 
AS "Тип ключа",
  a
.r_constraint_name AS "Имя родительского ключа",
  
c.column_name AS "Поле на которое создан FK",
  
'Родитель' AS "Родитель",
  
b.table_name AS "Родительская таблица",
  
b.constraint_name AS "Имя родительского ключа",
  b.constraint_type 
AS "Тип ключа",
  d
.column_name AS "Поле на которое создан PK"
FROM user_constraints a, user_constraints b, user_cons_columns c, user_cons_columns d
WHERE
  a.constraint_type = 'R'
  AND a.r_constraint_name = b.constraint_name
  AND b.table_name = 'DEPT' -- Таблица на которую ищем ссылки
  AND b.constraint_type = 'P'
  AND a.constraint_name = c.constraint_name
  AND b.constraint_name = d.constraint_name

Категория: ORACLE, PL/SQL | Добавил: Akarak (15.11.2011)
Просмотров: 2575 | Комментарии: 2 | Теги: ссылка, родительский, user_constraints | Рейтинг: 0.0/0
Всего комментариев: 2
0
2 некто   [Материал]
опять я :)
применил
Добавлю что получилось, потом найду если что. Заметил, что в сети хранить гораздо надежнее, чем локально

select * from (
select TC.TABLE_NAME, TC.COLUMN_NAME,
TC.DATA_TYPE||'('||TC.DATA_LENGTH||')'||decode(TC.NULLABLE,'Y','','N', 'NOTNULL', 'ERROR') TYP,
CC.COMMENTS

from ALL_ALL_TABLES T
join all_tab_comments C on C.TABLE_NAME = T.table_name
join all_tab_columns TC on TC.TABLE_NAME = T.table_name
join all_col_comments CC on CC.TABLE_NAME = T.table_name and CC.COLUMN_NAME = TC.COLUMN_NAME
where T.owner = 'MF'
and TC.OWNER = 'MF'
and C.OWNER = 'MF'
and CC.OWNER = 'MF'
and T.table_name = 'EQUIPMENT'
) A
left join (
SELECT
a.table_name CHILD_TAB,
c.column_name CHILD_KEY,
b.table_name PARENT_TAB,
d.column_name PARENT_KEY
FROM
user_constraints a
join user_constraints b on b.CONSTRAINT_NAME = a.R_CONSTRAINT_NAME
join user_cons_columns c on c.CONSTRAINT_NAME = a.CONSTRAINT_NAME
join user_cons_columns d on d.CONSTRAINT_NAME = b.CONSTRAINT_NAME
WHERE
a.table_name = 'EQUIPMENT'
) B
on B.CHILD_TAB = A.TABLE_NAME and B.CHILD_KEY = A.COLUMN_NAME

0
1 некто   [Материал]
Спасибо!

Имя *:
Email *:
Код *:
Меню сайта

Категории раздела
ORACLE, PL/SQL [36]
Скрипты DDL [3]
Скрипты по управлению объектами
Встроенные функции SQL [2]
Встроенные функции SQL

Интересные сайты
  • sql.ru
  • all-oracle.ru
  • oranet.ru
  • oracloid.ru
  • forum.vingrad.ru

  • Статистика

    Онлайн всего: 1
    Гостей: 1
    Пользователей: 0

    Поиск

    Copyright MyCorp © 2020
    Используются технологии uCoz