Jak mogę znaleźć tabele odwołujące się do danej tabeli w Oracle SQL Developer?
In Oracle SQL Developer , jeśli przeglądam informacje w tabeli, mogę zobaczyć ograniczenia, które pozwalają mi zobaczyć klucze obce (a więc do których tabel odnosi się ta tabela), i mogę zobaczyć zależności, aby zobaczyć, jakie pakiety i takie odniesienia do tabeli. Ale nie jestem pewien, jak znaleźć, które tabele odnoszą się do tabeli.
Na przykład, powiedzmy, że patrzę na emp
tabelę. Istnieje inna tabela emp_dept
, która pokazuje, którzy pracownicy pracują w jakich działach, który odwołuje się do tabeli emp
poprzez emp_id
, Klucz główny tabeli emp
. Czy istnieje sposób (przez jakiś element interfejsu użytkownika w programie, a nie przez SQL), aby dowiedzieć się, że tabela emp_dept
odwołuje się do tabeli emp
, bez mojej wiedzy, że tabela emp_dept
istnieje?
7 answers
Nie. Nie ma takiej opcji dostępnej w Oracle SQL Developer.
Musisz wykonać zapytanie ręcznie lub użyć innego narzędzia (na przykład programista PLSQL ma taką opcję). Poniższy SQL jest używany przez programistę PLSQL:
select table_name, constraint_name, status, owner
from all_constraints
where r_owner = :r_owner
and constraint_type = 'R'
and r_constraint_name in
(
select constraint_name from all_constraints
where constraint_type in ('P', 'U')
and table_name = :r_table_name
and owner = :r_owner
)
order by table_name, constraint_name
Gdzie r_owner
jest schematem, a {[2] } tabelą, dla której szukasz referencji. W nazwach rozróżnia się wielkość liter
Bądź ostrożny, ponieważ na karcie Raporty Oracle SQL Developer znajduje się opcja " Wszystkie tables/ Dependencies " pochodzi z ALL_DEPENDENCIES , która odnosi się do " zależności pomiędzy procedurami, pakietami, funkcjami, ciałami pakietów i wyzwalaczami dostępnymi dla bieżącego użytkownika, w tym zależności od widoków utworzonych bez żadnych linków do bazy danych.". Zatem ten raport nie ma żadnej wartości dla Twojego pytania.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-20 10:41:37
Aby dodać to do SQL Developer jako rozszerzenie wykonaj następujące czynności:
- zapisz poniższy kod do pliku xml (np.xml):
<items>
<item type="editor" node="TableNode" vertical="true">
<title><![CDATA[FK References]]></title>
<query>
<sql>
<![CDATA[select a.owner,
a.table_name,
a.constraint_name,
a.status
from all_constraints a
where a.constraint_type = 'R'
and exists(
select 1
from all_constraints
where constraint_name=a.r_constraint_name
and constraint_type in ('P', 'U')
and table_name = :OBJECT_NAME
and owner = :OBJECT_OWNER)
order by table_name, constraint_name]]>
</sql>
</query>
</item>
</items>
-
Dodaj rozszerzenie do SQL Developer:
- Narzędzia > Preferencje
- Baza Danych > Rozszerzenia Zdefiniowane Przez Użytkownika
- Kliknij przycisk "Dodaj wiersz"
- w polu Type wybierz "EDITOR", lokalizacja jest miejscem, w którym zapisałeś plik xml powyżej
- Kliknij "Ok", a następnie uruchom ponownie SQL Developer
Nawigacja do dowolnej tabeli i powinieneś teraz zobaczyć dodatkową kartę obok SQL, oznaczoną referencjami FK, która wyświetla nowe informacje FK.
-
Odniesienie
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-11-11 10:43:56
Zamień [swoją tabelę] na emp w zapytaniu poniżej
select owner,constraint_name,constraint_type,table_name,r_owner,r_constraint_name
from all_constraints
where constraint_type='R'
and r_constraint_name in (select constraint_name
from all_constraints
where constraint_type in ('P','U')
and table_name='[YOUR TABLE]');
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-07-17 15:00:45
Możesz to sprawdzić z widoku ALL_CONSTRAINTS
:
SELECT table_name
FROM ALL_CONSTRAINTS
WHERE constraint_type = 'R' -- "Referential integrity"
AND r_constraint_name IN
( SELECT constraint_name
FROM ALL_CONSTRAINTS
WHERE table_name = 'EMP'
AND constraint_type IN ('U', 'P') -- "Unique" or "Primary key"
);
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-29 17:43:38
SQL Developer 4.1, wydany w maju 2015 roku, dodał kartę Model, która pokazuje klucze obce tabeli, które odnoszą się do tabeli w formacie diagramu relacji encji.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-10 18:14:04
A może coś takiego:
SELECT c.constraint_name, c.constraint_type, c2.constraint_name, c2.constraint_type, c2.table_name
FROM dba_constraints c JOIN dba_constraints c2 ON (c.r_constraint_name = c2.constraint_name)
WHERE c.table_name = <TABLE_OF_INTEREST>
AND c.constraint_TYPE = 'R';
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-07-17 15:12:04
SELECT DISTINCT table_name,
constraint_name,
column_name,
r_table_name,
position,
constraint_type
FROM (SELECT uc.table_name,
uc.constraint_name,
cols.column_name,
(SELECT table_name
FROM user_constraints
WHERE constraint_name = uc.r_constraint_name) r_table_name,
(SELECT column_name
FROM user_cons_columns
WHERE constraint_name = uc.r_constraint_name
AND position = cols.position) r_column_name,
cols.position,
uc.constraint_type
FROM user_constraints uc
inner join user_cons_columns cols
ON uc.constraint_name = cols.constraint_name
WHERE constraint_type != 'C')
START WITH table_name = '&&tableName'
AND column_name = '&&columnName'
CONNECT BY NOCYCLE PRIOR table_name = r_table_name
AND PRIOR column_name = r_column_name;
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-12-01 12:47:53