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.

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';

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

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;

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)
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.