2014-01-16 2 views
1

db2에서 특정 db 스키마에 대한 기본 키 목록과 해당 테이블 이름을 얻는 방법은 무엇입니까?기본 키 목록과 해당 테이블 이름 얻기

나는

SELECT sc.name 
FROM SYSIBM.SYSCOLUMNS SC 
WHERE SC.TBNAME = 'REGISTRATION' 
AND sc.identity ='N' 
AND sc.tbcreator='schemaname' 
AND sc.keyseq=1 

내가 스키마를 형성 전체 기본 키, 열 이름과 테이블 이름을 얻을 같은 수정할 수, 테이블 등으로부터 기본 키를 얻을 수있는 몇 가지 질의를 발견했다?

+0

DB2를 실행중인 플랫폼은 무엇입니까? 각 테이블의 열 목록이나 각 테이블의 기본 키에 사용 된 열의 목록을 찾고 있습니까? (큰 차이가 있습니다) –

+0

테이블 이름, 기본 키 이름 및 열 이름이 필요합니다. – NaaN

+0

'sc.identity'가 부울 (본질적) 열이라고 가정 할 때, 목록에서 자동 생성/식별 열을 제거하는 이유는 무엇입니까? 테이블의 대부분의 기본 키는 정확한 열 유형입니다. 대리 (코드, 일반적으로 숫자) 키가 아닌 자연 (외부 ID) 기본 키를 찾고 있습니까? –

답변

1
  SELECT 
      tabschema, tabname, colname 
     FROM 
      syscat.columns 
     WHERE 
      keyseq IS NOT NULL AND 
      keyseq > 0 
     ORDER BY 
      tabschema, tabname, keyseq 
+0

이 답변을 수락합니다. 그리고 한 가지 질문이 남아 있습니다. 열 이름과 함께 DB2에서 기본 키 제약 조건 이름을 가져올 수 있습니까? – NaaN

+1

어떤 플랫폼입니까? [이 블로그 엔트리] (http://www.ibm.com/developerworks/data/library/techarticle/dm-0411melnyk/#constr)에는이 정보가있는 다른 테이블이 있지만 스키마/테이블 이름이 질문과 다릅니다. 플랫폼이 다를 수 있습니다. –

+0

@ Clockwork-Muse : 블로그에 감사드립니다. 나는 DB2에 꽤 익숙하다. 나는 어떤 플랫폼을 가지고 있지 않은가? 외래 키에 대해 – NaaN