Bagaimana Anda bisa tahu jika sebuah tabel di DB2 memiliki Kunci Utama?

9

Kami menggunakan alat yang membutuhkan tabel spesifik dalam basis data DB2 kami untuk memiliki Kunci Utama yang ditentukan.

Apakah ada cara menggunakan pernyataan pilih pada DB untuk melihat apakah tabel yang diberikan memiliki satu?

Terima kasih.

Ben
sumber

Jawaban:

10

Penafian: Saya tidak tahu DB2.

Saya hanya googled ini dengan "definisi tabel db2".

Sumber:

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;

Sumber:

SELECT * FROM syscat.tabconst WHERE type = 'P';
RolandoMySQLDBA
sumber
1
TAB.TYPE = 'V' akan memberi Anda pandangan, yang saya yakin tidak Anda inginkan. Gunakan TAB.TYPE = 'T' untuk tabel.
GilShalit
8

Anda dapat melakukan db2look, yang akan memberi Anda DNL untuk tabel.

db2look -d db_name -e -x -z schema_name -t table_name
Govind Kailas
sumber
Selamat datang di dba.se dan terima kasih atas jawaban yang membantu ini - Saya harap Anda tidak keberatan mengedit format saya?
Jack bilang coba topanswers.xyz
@JackDouglas - terima kasih untuk suntingan itu, terlihat cukup mudah dibaca sekarang
Govind Kailas
0

Ini mungkin opsi yang paling mudah, karena kunci utama didukung oleh indeks yang cocok:

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

Anda juga dapat meminta tabel katalog kolom:

select NAME from SYSIBM.SYSCOLUMNS where tbname = 'TABLE' and keyseq > 0 order by keyseq;
Scott McIntyre
sumber
2
Kunci utama bukan indeks (meskipun didukung oleh satu).
mustaccio
0
  1. SYSCAT.INDEXES.UNIQUERULE (Jika UNIQUERULE adalah P maka primary key)
  2. SYSCAT.TABCONST.TYPE (jika Type adalah P maka Primary Key Constraint)
Daniel Adeniji
sumber