복붙노트

[SQL] 어떻게하는 테이블이 오라클 SQL Developer에서 특정 테이블을 참조 찾을 수 있습니까?

SQL

어떻게하는 테이블이 오라클 SQL Developer에서 특정 테이블을 참조 찾을 수 있습니까?

나는 테이블에 대한 정보를 볼 수있어 경우, 오라클 SQL Developer에서, 나는 나 (테이블이이 테이블에서 참조하여 등) 외래 키를 볼 수 있도록 제약을 볼 수 있습니다, 내가 무엇을 볼 수있는 종속성을 볼 수 있습니다 패키지와 같은 참조 테이블. 하지만 테이블을 참조하는 테이블을 찾는 방법을 모르겠어요.

예를 들어, 내가 emp 테이블에서 찾고 있어요 말한다. 다른 테이블의 emp_dept가 어떤 직원이 어떤 부서에서 일을 캡처하는 참조 EMP_ID 통해 emp 테이블, emp 테이블의 기본 키. 나없이 emp_dept 테이블 참조 emp 테이블에서, emp_dept 테이블이 존재한다는 것을 알 필요 찾을 수 (가 아닌 SQL을 통해 프로그램의 일부 UI 요소를 통해) 방법이 있나요?

해결법

  1. ==============================

    1.제 오라클 SQL Developer에서 사용 가능한 그런 옵션이 없습니다.

    제 오라클 SQL Developer에서 사용 가능한 그런 옵션이 없습니다.

    당신은 손으로 쿼리를 실행하거나 (인스턴스 PLSQL 개발자 등의 옵션이있는 경우) 다른 도구를 사용해야합니다. 다음 SQL은 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
    

    어디 r_owner 스키마이며, r_table_name은 참조를 찾고있는 테이블입니다. 이름은 대소 문자를 구분합니다

    오라클 SQL Developer의 보고서 탭에서 종속성을 포함하여 현재 사용자가 액세스 프로 시저, 패키지, 기능, 패키지 기관 및 트리거 간의 종속성 "을 의미한다이 ALL_DEPENDENCIES에서이다"종속성 모든 테이블 / "옵션이 있기 때문에주의 데이터베이스 링크없이 생성 전망합니다. ". 그런 다음이 보고서는 귀하의 질문에 대한 가치가 없습니다.

  2. ==============================

    2.확장은 다음을 수행으로 SQL 개발자에이를 추가하려면 :

    확장은 다음을 수행으로 SQL 개발자에이를 추가하려면 :

    <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>
    
  3. ==============================

    3.아래의 쿼리에 EMP와 [테이블]을 교체

    아래의 쿼리에 EMP와 [테이블]을 교체

    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]');
    
  4. ==============================

    4.2015 년 5 월 출시 된 SQL 개발자 4.1, 쇼 테이블 외래 키는 개체 관계 다이어그램 형식으로 표를 참조 모델 탭을 추가했다.

    2015 년 5 월 출시 된 SQL 개발자 4.1, 쇼 테이블 외래 키는 개체 관계 다이어그램 형식으로 표를 참조 모델 탭을 추가했다.

  5. ==============================

    5.당신은 ALL_CONSTRAINTS보기에서이를 조회 할 수 있습니다 :

    당신은 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"
        );
    
  6. ==============================

    6.어떻게 이런 일에 대해 :

    어떻게 이런 일에 대해 :

    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';
    
  7. ==============================

    7.

    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; 
    
  8. ==============================

    8.이 년 동안 제품에왔다 - 그것은 2011 년에 제품에 아니었지만.

    이 년 동안 제품에왔다 - 그것은 2011 년에 제품에 아니었지만.

    그러나, 단순히 모델 페이지를 클릭합니다.

    당신이이 기능에 액세스 할 수 (2013 년 발표) 이상 버전 4.0에서 확인하십시오.

  9. ==============================

    9.XML 아래는 외래 키와 관련된 열을 얻는 데 도움이 될 것입니다 사용하여, SQL 개발자 플러그인에 대한 위의 대답에 추가합니다.

    XML 아래는 외래 키와 관련된 열을 얻는 데 도움이 될 것입니다 사용하여, SQL 개발자 플러그인에 대한 위의 대답에 추가합니다.

        <items>
            <item type="editor" node="TableNode" vertical="true">
            <title><![CDATA[FK References]]></title>
            <query>
                <sql>
                    <![CDATA[select a.owner,
                                    a.constraint_name,
                                    a.table_name,
                                    b.column_name,
                                    a.status
                             from   all_constraints a
                             join   all_cons_columns b ON b.constraint_name = a.constraint_name
                             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>
    
  10. from https://stackoverflow.com/questions/1143728/how-can-i-find-which-tables-reference-a-given-table-in-oracle-sql-developer by cc-by-sa and MIT license