2012-07-15 3 views
4

제약 조건 이름에서 테이블 및 열 이름에 대한 정보가 필요합니다.JDBC Metada 검색 제약 정보

누군가가 connection.getMetadata(). getX와 유사한 누군가가 존재하여 제약 정보를 검색합니까?

내 테스트 케이스는 오라클 데이터베이스에 있지만 내 가장 좋은 방법은 그냥 JDBC

답변

6

당신이 외래 키와 기본 키 제약 조건에 대해 얘기합니다. DatabaseMetaData은이 정보를 검색하는 방법을 제공합니다. 외래 키는 getImportedKeys(..)getCrossReference(..)이고 기본 키는 getPrimaryKeys(..)getExportedKeys(..)입니다.

그냥 사용하는 방법에주의하십시오. getCrossReference(..)getExportedKeys은 제 의견으로는 반 직관적입니다.

고유 한 제약 조건이 필요한 경우 unique 매개 변수에 true을 전달하면 getIndexInfo(..)을 사용할 수 있어야합니다.

+0

멋지 네요.하지만 고유 한 제약 조건도 가져와야합니다. 고마워요. – jrey

+1

@ jrey.py 제 대답에 대한 업데이트를 확인하십시오. –

+0

@ mark-rottevel 고맙습니다. – jrey

3

당신은 USER_CONSTRAINTSALL_CONSTRAINTS 테이블에서 제약 정보를 정의 얻을 수로 해결합니다.
필수 where 절 필드를 전달해야합니다.

:

select 
    CONSTRAINT_NAME, 
    CONSTRAINT_TYPE, 
    TABLE_NAME, 
    ... 
from 
    USER_CONSTRAINTS 
where 
    CONSTRAINT_NAME like concat(?, '%');