Jak rozpoznać, czy tabela w DB2 ma klucz podstawowy?


9

Używamy narzędzia, które wymaga określonych tabel w naszej bazie danych DB2, aby mieć zdefiniowany klucz podstawowy.

Czy istnieje sposób za pomocą instrukcji select na DB, aby sprawdzić, czy dana tabela ma taką instrukcję?

Dzięki.

Odpowiedzi:


10

Oświadczenie: Nie znam bazy danych DB2.

Po prostu przejrzałem je za pomocą „definicji tabeli db2”.

Źródło:

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;

Źródło:

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

1
TAB.TYPE = „V” pokaże Ci poglądy, które moim zdaniem nie chcesz. Dla tabel użyj TAB.TYPE = „T”.
GilShalit,


0

Jest to prawdopodobnie najłatwiejsza opcja, ponieważ klucz podstawowy jest obsługiwany przez pasujący indeks:

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

Możesz także wykonać zapytanie do tabeli katalogu kolumn:

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

2
Klucz podstawowy nie jest indeksem (chociaż jest obsługiwany przez jeden).
mustaccio

0
  1. SYSCAT.INDEXES.UNIQUERULE (jeśli UNIQUERULE to P, to klucz podstawowy)
  2. SYSCAT.TABCONST.TYPE (jeśli typ to P, to ograniczenie klucza podstawowego)
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.