web-dev-qa-db-ja.com

DB2のテーブルに主キーがあるかどうかはどのようにしてわかりますか?

DB2データベースの特定のテーブルに主キーを定義する必要があるツールを使用しています。

DBで選択ステートメントを使用して、特定のテーブルに選択ステートメントがあるかどうかを確認する方法はありますか?

ありがとう。

9
Ben

免責事項:私は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';
10
RolandoMySQLDBA

あなたはdb2look、テーブルのDDLを提供します。

db2look -d db_name -e -x -z schema_name -t table_name
8
Govind Kailas

主キーは一致するインデックスによってサポートされるため、これはおそらく最も簡単なオプションです。

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;
0
Scott McIntyre
  1. SYSCAT.INDEXES.UNIQUERULE(UNIQUERULEがPの場合、主キー)
  2. SYSCAT.TABCONST.TYPE(TypeがPの場合、主キー制約)
0
Daniel Adeniji