제약 조건에 대한 자세한 정보 (예 : 외래 키가 참조하는 테이블)를 포함하는 테이블은 무엇입니까? 'all_cons_columns'테이블, 'all_constraints'테이블에는 매우 도움이되지 않는 제약 조건의 이름 만 들어 있습니다. 현재 dbms_metadata.get_ddl()을 사용하고 있지만 모든 데이터베이스에서 작동하지 않습니다.기본/외래 키 제약 조건에 대한 oracle의 메타 데이터보기
감사합니다.
제약 조건에 대한 자세한 정보 (예 : 외래 키가 참조하는 테이블)를 포함하는 테이블은 무엇입니까? 'all_cons_columns'테이블, 'all_constraints'테이블에는 매우 도움이되지 않는 제약 조건의 이름 만 들어 있습니다. 현재 dbms_metadata.get_ddl()을 사용하고 있지만 모든 데이터베이스에서 작동하지 않습니다.기본/외래 키 제약 조건에 대한 oracle의 메타 데이터보기
감사합니다.
ALL_CONSTRAINTS의 R_CONSTRAINT_NAME 열에는 외래 키에 대한 참조 된 PK/UK 제약 조건의 이름이 들어 있습니다. 그런 다음 해당 제약 조건을 조회하여 참조 테이블의 TABLE_NAME을 얻을 수 있습니다.
ALL_CONS_COLUMNS을 보면 외래 키의 열 POSITION이 주/고유 키의 열 POSITION과 일치합니다.
보십시오 : Reverse Engineering a Data Model. 이것을 바탕으로 나는 Python program that dumps Oracle db schema to text을했습니다. 관심있는 일을 PRIMARY_KEYS_INFO_SQL
및 FOREIGN_KEYS_INFO_SQL
있습니다
흥미로운 링크. 감사. – ssr532
이 문장은 테이블, 제약 조건 이름 및 외래 키 테이블 이름을 나열합니다. 외래 키를 검색하는 스크립트를 생성하기 위해
select c.table_name,c.constraint_name, --c.r_constraint_name,
cc.table_name
from all_constraints c
inner join all_constraints cc on c.r_constraint_name = cc.constraint_name
감사합니다. – ssr532
을 다음 쿼리를 사용할 수 있습니다.
SELECT
'ALTER TABLE ' || a.table_name || ' ADD CONSTRAINT ' || a.constraint_name
|| ' FOREIGN KEY (' || a.column_name || ') REFERENCES ' || jcol.table_name
|| ' (' || jcol.column_name || ');' as commandforeign
FROM
(SELECT
uc.table_name, uc.constraint_name, uc.r_constraint_name, col.column_name
FROM
USER_CONSTRAINTS uc, USER_CONS_COLUMNS col
WHERE
uc.constraint_type='R' and uc.constraint_name=col.constraint_name) a
INNER JOIN
USER_CONS_COLUMNS jcol
ON
a.r_constraint_name=jcol.constraint_name;
duh. 그냥 봤어. 감사. – ssr532