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


9

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

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

ありがとう。

回答:


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


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 2014年

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.