DB2의 테이블에 기본 키가 있는지 어떻게 알 수 있습니까?


9

기본 키를 정의하기 위해 DB2 데이터베이스의 특정 테이블이 필요한 도구를 사용하고 있습니다.

주어진 테이블에 테이블이 있는지 확인하기 위해 DB에서 select 문을 사용하는 방법이 있습니까?

감사.

답변:


10

면책 조항 : DB2를 모른다.

나는 단순히 "db2 테이블 정의"로 구글을 검색했다.

출처:

SELECT * 
FROM SYSIBM.SYSTABLES TAB,SYSIBM.SYSCOLUMNS COL 
WHERE TAB.CREATOR = COL.TBCREATOR 
AND TAB.CREATOR = 'xxxx' 
AND TAB.NAME = 'xxxxxxxxxxxxx' 
AND TAB.NAME = COL.TBNAME 
AND TAB.TYPE = 'V' ( OR 'T' ) 
ORDER BY 1,2;

출처:

SELECT * FROM syscat.tabconst WHERE type = 'P';

1
TAB.TYPE = 'V'는 원하지 않는 뷰를 제공합니다. 테이블에는 TAB.TYPE = 'T'를 사용하십시오.
GilShalit

8

을 수행 db2look하면 테이블의 ddl을 얻을 수 있습니다.

db2look -d db_name -e -x -z schema_name -t table_name

dba.se에 오신 것을 환영합니다.이 유용한 답변에 감사드립니다. 내 서식 편집이 마음에 들지 않기를 바랍니다.
잭 topanswers.xyz 시도라고

@JackDouglas - 그 편집 주셔서 감사합니다, 지금 꽤 읽을 보인다
빈드 Kailas에게

0

기본 키는 일치하는 인덱스에서 지원되므로 가장 쉬운 옵션 일 것입니다.

select COLNAMES from SYSIBM.SYSINDEXES where tbname = 'TABLE' and uniquerule = 'P';

열 카탈로그 테이블을 쿼리 할 수도 있습니다.

select NAME from SYSIBM.SYSCOLUMNS where tbname = 'TABLE' and keyseq > 0 order by keyseq;

2
기본 키는 인덱스 가 아닙니다 (하나가 지원하지만).
mustaccio

0
  1. SYSCAT.INDEXES.UNIQUERULE (UNIXRULE이 P 인 경우 기본 키)
  2. SYSCAT.TABCONST.TYPE (유형이 P이면 기본 키 제한 조건)
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.