DB2'deki bir tablonun Birincil Anahtarı olup olmadığını nasıl anlarsınız?


9

Birincil Anahtarın tanımlanması için DB2 veritabanımızdaki belirli tabloları gerektiren bir araç kullanıyoruz.

Belirli bir tablonun bir tane olup olmadığını görmek için DB'de bir select deyimi kullanmanın bir yolu var mı?

Teşekkürler.

Yanıtlar:


10

Yasal Uyarı: DB2 bilmiyorum.

Ben sadece "db2 tablo tanımı" ile googled.

Kaynak:

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;

Kaynak:

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

1
TAB.TYPE = 'V', istemediğinize inandığım görüşler verecektir. Tablolar için TAB.TYPE = 'T' kullanın.
GilShalit

8

db2looktablo için ddls verecek bir yapabilirsiniz .

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

Dba.se'ye hoş geldiniz ve bu yararlı cevap için teşekkürler - Umarım biçimlendirme düzenlememi önemsemezsiniz?
Jack diyor ki topanswers.xyz

@JackDouglas - bu düzenlemeler için teşekkürler, şimdi oldukça okunabilir görünüyor
Govind Kailas

0

Birincil anahtar eşleşen bir dizin tarafından desteklendiğinden, bu muhtemelen en kolay seçenektir:

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

Ayrıca sütun kataloğu tablosunu da sorgulayabilirsiniz:

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

2
Birincil anahtar bir dizin değildir (bir tanesi tarafından desteklenmesine rağmen).
mustaccio

0
  1. SYSCAT.INDEXES.UNIQUERULE (UNIQUERULE P ise birincil Anahtar ise)
  2. SYSCAT.TABCONST.TYPE (Tür P ise, Birincil Anahtar Kısıtıysa)
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.