Primärschlüssel einer Tabelle ermitteln?
- Dieses Thema hat 2 Antworten und 1 Teilnehmer, und wurde zuletzt aktualisiert vor 11 Jahre, 8 Monaten von
Anonym.
-
AuthorPosts
-
12. Januar 2012 um 20:08 Uhr #4143
AnonymInaktivHallo, ich mal wieder.
Gibt es eine Möglichkeit, die Struktur einer Tabelle so auszulesen, dass man neben den Datentypen auch eine Auskunft darüber erhält, welche Einträge als Primärschlüssel dienen?
Mittels DESCRIBE TABLE x SHOW DETAIL erhält man zwar Informationen über Spaltennamen und zugehörige Datentypen, nicht aber über Dinge wie Primär- oder Fremdschlüssel oder Unique usw. – diese Informationen bräuchte ich allerdings auch…
Grüße, Antragon
20. Januar 2012 um 16:52 Uhr #4285
AnonymInaktivHallo Antragon,
vermutlich reicht Dir schon das SQL Statement [code sql]CALL SYSPROC.ADMIN_CMD ('DESCRIBE INDEXES FOR TABLE MYUSER.TABLE1 SHOW DETAIL');[/code] oder als DB2 Command:
db2 "DESCRIBE INDEXES FOR TABLE MYUSER.TABLE1 SHOW DETAIL"
Natürlich gehen auch Abfragen über den Catalog über SYSINDEXES und SYSCOLUMNS. Hier ein etwas komplizierteres Beispiel mit einem anderen Fokus:
[code sql]SELECT T.TABSCHEMA, T.TABNAME,
    I.NAME, I.COLNAMES, I.UNIQUERULE,
    T.NLEAF, T.INDEX_SCANS, T.INDEX_ONLY_SCANS,
    I.FIRSTKEYCARD, I.FULLKEYCARD,
    I.CLUSTERFACTOR,
    PK."PRIMARY KEY COLS"
    --,T.*,I.*
FROMÂ Â TABLE(MON_GET_INDEX('MYUSER','TABLE1', -2)) as T,
    SYSIBM.SYSINDEXES I,
    (SELECT TBCREATOR, TBNAME,
         listagg(rtrim(CHAR(KEYSEQ))||'='||rtrim(NAME),'|') AS "PRIMARY KEY COLS"
    FROM  SYSIBM.SYSCOLUMNS
    GROUP BY TBCREATOR, TBNAME) AS PK
WHERE T.TABSCHEMA = I.CREATOR
ANDÂ Â T.TABNAME = I.TBNAME
ANDÂ Â T.IID = I.IID
ANDÂ Â PK.TBCREATOR = T.TABSCHEMA
ANDÂ Â PK.TBNAMEÂ Â = T.TABNAME
;Â Â Â Â Â [/code]
Gruß
Gernot
26. Januar 2012 um 10:58 Uhr #4387
AnonymInaktivDanke für die Antwort.
Grüße, Antragon
-
AuthorPosts
You must be logged in to reply to this topic.